TypeError at /

Expected user agent to be a string, got None
Request Method: GET
Request URL: http://www.jafron.com/
Django Version: 4.2.9
Exception Type: TypeError
Exception Value:
Expected user agent to be a string, got None
Exception Location: /usr/local/lib/python3.10/site-packages/ua_parser/user_agent_parser.py, line 229, in _lookup
Raised during: wagtail.views.serve
Python Executable: /usr/local/bin/python3.10
Python Version: 3.10.17
Python Path:
['/app',
 '/usr/local/bin',
 '/usr/local/lib/python310.zip',
 '/usr/local/lib/python3.10',
 '/usr/local/lib/python3.10/lib-dynload',
 '/usr/local/lib/python3.10/site-packages']
Server time: Wed, 14 May 2025 13:57:29 +0000

Traceback Switch to copy-and-paste view



Request information

USER

AnonymousUser

GET

No GET data

POST

No POST data

FILES

No FILES data

No cookie data

META

Variable Value
HTTP_ACCEPT
'*/*'
HTTP_ACCEPT_ENCODING
'gzip'
HTTP_EAGLEEYE_RPCID
'0.1'
HTTP_EAGLEEYE_TRACEID
'0ae5a7e217472310491818651e0066'
HTTP_HOST
'www.jafron.com'
HTTP_WEB_SERVER_TYPE
'nginx'
HTTP_WL_PROXY_CLIENT_IP
'104.140.21.34'
HTTP_X5_UUID
'0588d7182861189e04f8fc0a4d7c117f'
HTTP_X_CLIENT_IP
'104.140.21.34'
HTTP_X_ENVOY_ATTEMPT_COUNT
'1'
HTTP_X_ENVOY_DECORATOR_OPERATION
'jafron-official-website.prod-official.svc.cluster.local:80/*'
HTTP_X_ENVOY_EXTERNAL_ADDRESS
'10.0.1.142'
HTTP_X_ENVOY_PEER_METADATA
'ChQKDkFQUF9DT05UQUlORVJTEgIaAAoaCgpDTFVTVEVSX0lEEgwaCkt1YmVybmV0ZXMKHgoMSU5TVEFOQ0VfSVBTEg4aDDE3Mi4yMi41NC4xNgoZCg1JU1RJT19WRVJTSU9OEggaBjEuMjIuMArwAQoGTEFCRUxTEuUBKuIBCjMKJmdhdGV3YXkubmV0d29ya2luZy5rOHMuaW8vZ2F0ZXdheS1uYW1lEgkaB2dhdGV3YXkKIgoVaXN0aW8uaW8vZ2F0ZXdheS1uYW1lEgkaB2dhdGV3YXkKMgofc2VydmljZS5pc3Rpby5pby9jYW5vbmljYWwtbmFtZRIPGg1nYXRld2F5LWlzdGlvCi8KI3NlcnZpY2UuaXN0aW8uaW8vY2Fub25pY2FsLXJldmlzaW9uEggaBmxhdGVzdAoiChdzaWRlY2FyLmlzdGlvLmlvL2luamVjdBIHGgVmYWxzZQoaCgdNRVNIX0lEEg8aDWNsdXN0ZXIubG9jYWwKJwoETkFNRRIfGh1nYXRld2F5LWlzdGlvLTU3ZjhiNDRkZi1xend4bgocCglOQU1FU1BBQ0USDxoNaXN0aW8taW5ncmVzcwpXCgVPV05FUhJOGkxrdWJlcm5ldGVzOi8vYXBpcy9hcHBzL3YxL25hbWVzcGFjZXMvaXN0aW8taW5ncmVzcy9kZXBsb3ltZW50cy9nYXRld2F5LWlzdGlvCiAKDVdPUktMT0FEX05BTUUSDxoNZ2F0ZXdheS1pc3Rpbw=='
HTTP_X_ENVOY_PEER_METADATA_ID
'router~172.22.54.16~gateway-istio-57f8b44df-qzwxn.istio-ingress~istio-ingress.svc.cluster.local'
HTTP_X_FORWARDED_CLUSTER
'waf,'
HTTP_X_FORWARDED_FOR
'104.140.21.34, 47.106.31.187,10.0.1.142'
HTTP_X_FORWARDED_PROTO
'http'
HTTP_X_REAL_IP
'47.106.31.187'
HTTP_X_REQUEST_ID
'800c9777-f8f1-496f-93cf-70f3a36a3952'
HTTP_X_SINFO
'on'
HTTP_X_TRUE_IP
'104.140.21.34'
PATH_INFO
'/'
QUERY_STRING
''
RAW_URI
'/'
REMOTE_ADDR
'172.22.54.16'
REMOTE_PORT
'51762'
REQUEST_METHOD
'GET'
SCRIPT_NAME
''
SERVER_NAME
'0.0.0.0'
SERVER_PORT
'8000'
SERVER_PROTOCOL
'HTTP/1.1'
SERVER_SOFTWARE
'gunicorn/20.0.4'
gunicorn.socket
wsgi.errors
wsgi.file_wrapper
wsgi.input
wsgi.input_terminated
True
wsgi.multiprocess
True
wsgi.multithread
True
wsgi.run_once
False
wsgi.url_scheme
'http'
wsgi.version
(1, 0)

Settings

Using settings module headquarters.settings.dev

Setting Value
ABSOLUTE_URL_OVERRIDES
{}
ADMINS
[]
ALLOWED_HOSTS
['*']
APPEND_SLASH
True
AUTHENTICATION_BACKENDS
['django.contrib.auth.backends.ModelBackend']
AUTH_PASSWORD_VALIDATORS
'********************'
AUTH_USER_MODEL
'auth.User'
AWS_S3_FILE_OVERWRITE
False
BASE_DIR
'/app'
CACHES
{'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'}}
CACHE_MIDDLEWARE_ALIAS
'default'
CACHE_MIDDLEWARE_KEY_PREFIX
'********************'
CACHE_MIDDLEWARE_SECONDS
600
CSRF_COOKIE_AGE
31449600
CSRF_COOKIE_DOMAIN
None
CSRF_COOKIE_HTTPONLY
False
CSRF_COOKIE_MASKED
False
CSRF_COOKIE_NAME
'csrftoken'
CSRF_COOKIE_PATH
'/'
CSRF_COOKIE_SAMESITE
'Lax'
CSRF_COOKIE_SECURE
False
CSRF_FAILURE_VIEW
'django.views.csrf.csrf_failure'
CSRF_HEADER_NAME
'HTTP_X_CSRFTOKEN'
CSRF_TRUSTED_ORIGINS
['https://*.jafron.com']
CSRF_USE_SESSIONS
False
DATABASES
{'default': {'ATOMIC_REQUESTS': False,
             'AUTOCOMMIT': True,
             'CONN_HEALTH_CHECKS': False,
             'CONN_MAX_AGE': 0,
             'ENGINE': 'django.db.backends.mysql',
             'HOST': '10.0.1.147',
             'NAME': 'jow_data',
             'OPTIONS': {},
             'PASSWORD': '********************',
             'PORT': '3306',
             'TEST': {'CHARSET': None,
                      'COLLATION': None,
                      'MIGRATE': True,
                      'MIRROR': None,
                      'NAME': None},
             'TIME_ZONE': None,
             'USER': 'official'}}
DATABASE_ROUTERS
[]
DATA_UPLOAD_MAX_MEMORY_SIZE
2621440
DATA_UPLOAD_MAX_NUMBER_FIELDS
1000
DATA_UPLOAD_MAX_NUMBER_FILES
100
DATETIME_FORMAT
'N j, Y, P'
DATETIME_INPUT_FORMATS
['%Y-%m-%d %H:%M:%S',
 '%Y-%m-%d %H:%M:%S.%f',
 '%Y-%m-%d %H:%M',
 '%m/%d/%Y %H:%M:%S',
 '%m/%d/%Y %H:%M:%S.%f',
 '%m/%d/%Y %H:%M',
 '%m/%d/%y %H:%M:%S',
 '%m/%d/%y %H:%M:%S.%f',
 '%m/%d/%y %H:%M']
DATE_FORMAT
'N j, Y'
DATE_INPUT_FORMATS
['%Y-%m-%d',
 '%m/%d/%Y',
 '%m/%d/%y',
 '%b %d %Y',
 '%b %d, %Y',
 '%d %b %Y',
 '%d %b, %Y',
 '%B %d %Y',
 '%B %d, %Y',
 '%d %B %Y',
 '%d %B, %Y']
DEBUG
True
DEBUG_PROPAGATE_EXCEPTIONS
False
DECIMAL_SEPARATOR
'.'
DEFAULT_AUTO_FIELD
'django.db.models.AutoField'
DEFAULT_CHARSET
'utf-8'
DEFAULT_EXCEPTION_REPORTER
'django.views.debug.ExceptionReporter'
DEFAULT_EXCEPTION_REPORTER_FILTER
'django.views.debug.SafeExceptionReporterFilter'
DEFAULT_FILE_STORAGE
'storages.backends.s3.S3Storage'
DEFAULT_FROM_EMAIL
'gitlab@jafron.com'
DEFAULT_INDEX_TABLESPACE
''
DEFAULT_TABLESPACE
''
DISALLOWED_USER_AGENTS
[]
EMAIL_BACKEND
'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST
'smtp.jafron.com'
EMAIL_HOST_PASSWORD
'********************'
EMAIL_HOST_USER
'gitlab@jafron.com'
EMAIL_PORT
465
EMAIL_SSL_CERTFILE
None
EMAIL_SSL_KEYFILE
'********************'
EMAIL_SUBJECT_PREFIX
'[Jafron Official Website]'
EMAIL_TIMEOUT
None
EMAIL_USE_LOCALTIME
False
EMAIL_USE_SSL
True
EMAIL_USE_TLS
False
FILE_UPLOAD_DIRECTORY_PERMISSIONS
None
FILE_UPLOAD_HANDLERS
['django.core.files.uploadhandler.MemoryFileUploadHandler',
 'django.core.files.uploadhandler.TemporaryFileUploadHandler']
FILE_UPLOAD_MAX_MEMORY_SIZE
2621440
FILE_UPLOAD_PERMISSIONS
420
FILE_UPLOAD_TEMP_DIR
None
FIRST_DAY_OF_WEEK
0
FIXTURE_DIRS
[]
FORCE_SCRIPT_NAME
None
FORMAT_MODULE_PATH
None
FORM_RENDERER
'django.forms.renderers.DjangoTemplates'
IGNORABLE_404_URLS
[]
INSTALLED_APPS
['home',
 'search',
 'wagtail.contrib.forms',
 'wagtail.contrib.redirects',
 'wagtail.embeds',
 'wagtail.sites',
 'wagtail.users',
 'wagtail.snippets',
 'wagtail.documents',
 'wagtail.images',
 'wagtail.search',
 'wagtail.admin',
 'wagtail',
 'modelcluster',
 'taggit',
 'django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'main',
 'news',
 'solution',
 'product',
 'landmark',
 'article',
 'urls',
 'wagtailtinymce',
 'wagtail.locales',
 'wagtail.api.v2',
 'jianfu_main']
INTERNAL_IPS
[]
LANGUAGES
[('en', 'English'), ('zh', 'Chinese')]
LANGUAGES_BIDI
['he', 'ar', 'ar-dz', 'ckb', 'fa', 'ur']
LANGUAGE_CODE
'en-us'
LANGUAGE_COOKIE_AGE
None
LANGUAGE_COOKIE_DOMAIN
None
LANGUAGE_COOKIE_HTTPONLY
False
LANGUAGE_COOKIE_NAME
'django_language'
LANGUAGE_COOKIE_PATH
'/'
LANGUAGE_COOKIE_SAMESITE
None
LANGUAGE_COOKIE_SECURE
False
LOCALE_PATHS
[]
LOGGING
{'disable_existing_loggers': False,
 'formatters': {'standard': {'datefmt': '%Y-%m-%d %H:%M:%S',
                             'format': '%(asctime)s [%(levelname)s] '
                                       '%(pathname)s:%(funcName)s:%(lineno)d '
                                       '%(message)s'}},
 'handlers': {'console': {'class': 'logging.StreamHandler',
                          'formatter': 'standard'},
              'file': {'backupCount': 30,
                       'class': 'logging.handlers.TimedRotatingFileHandler',
                       'filename': '/opt/logs/wagtail-server.log',
                       'formatter': 'standard',
                       'when': 'MIDNIGHT'}},
 'loggers': {'django': {'handlers': ['console', 'file'],
                        'level': 'INFO',
                        'propagate': True},
             'django.db': {'handlers': ['console', 'file'],
                           'level': 'ERROR',
                           'propagate': True},
             'wagtail': {'handlers': ['console', 'file'],
                         'level': 'ERROR',
                         'propagate': True}},
 'version': 1}
LOGGING_CONFIG
'logging.config.dictConfig'
LOGIN_REDIRECT_URL
'/accounts/profile/'
LOGIN_URL
'/accounts/login/'
LOGOUT_REDIRECT_URL
None
MANAGERS
[]
MEDIA_ROOT
'/app/media'
MEDIA_URL
'/media/'
MESSAGE_STORAGE
'django.contrib.messages.storage.fallback.FallbackStorage'
MIDDLEWARE
['django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware',
 'django.middleware.security.SecurityMiddleware',
 'wagtail.contrib.redirects.middleware.RedirectMiddleware',
 'headquarters.middleware.UserAgentMiddleware']
MIGRATION_MODULES
{}
MONTH_DAY_FORMAT
'F j'
NUMBER_GROUPING
0
PASSWORD_HASHERS
'********************'
PASSWORD_RESET_TIMEOUT
'********************'
PREPEND_WWW
False
PROJECT_DIR
'/app/headquarters'
ROOT_URLCONF
'headquarters.urls'
SECRET_KEY
'********************'
SECRET_KEY_FALLBACKS
'********************'
SECURE_CONTENT_TYPE_NOSNIFF
True
SECURE_CROSS_ORIGIN_OPENER_POLICY
'same-origin'
SECURE_HSTS_INCLUDE_SUBDOMAINS
False
SECURE_HSTS_PRELOAD
False
SECURE_HSTS_SECONDS
0
SECURE_PROXY_SSL_HEADER
None
SECURE_REDIRECT_EXEMPT
[]
SECURE_REFERRER_POLICY
'same-origin'
SECURE_SSL_HOST
None
SECURE_SSL_REDIRECT
False
SERVER_EMAIL
'smtp.jafron.com'
SESSION_CACHE_ALIAS
'default'
SESSION_COOKIE_AGE
1209600
SESSION_COOKIE_DOMAIN
None
SESSION_COOKIE_HTTPONLY
True
SESSION_COOKIE_NAME
'sessionid'
SESSION_COOKIE_PATH
'/'
SESSION_COOKIE_SAMESITE
'Lax'
SESSION_COOKIE_SECURE
False
SESSION_ENGINE
'django.contrib.sessions.backends.db'
SESSION_EXPIRE_AT_BROWSER_CLOSE
False
SESSION_FILE_PATH
None
SESSION_SAVE_EVERY_REQUEST
False
SESSION_SERIALIZER
'django.contrib.sessions.serializers.JSONSerializer'
SETTINGS_MODULE
'headquarters.settings.dev'
SHORT_DATETIME_FORMAT
'm/d/Y P'
SHORT_DATE_FORMAT
'm/d/Y'
SIGNING_BACKEND
'django.core.signing.TimestampSigner'
SILENCED_SYSTEM_CHECKS
[]
STATICFILES_DIRS
['/app/headquarters/static']
STATICFILES_FINDERS
['django.contrib.staticfiles.finders.FileSystemFinder',
 'django.contrib.staticfiles.finders.AppDirectoriesFinder']
STATICFILES_STORAGE
'django.contrib.staticfiles.storage.ManifestStaticFilesStorage'
STATIC_ROOT
'/app/static'
STATIC_URL
'/static/'
STORAGES
{'default': {'BACKEND': 'storages.backends.s3.S3Storage',
             'OPTIONS': {'access_key': '********************',
                         'bucket_name': 'wagtail',
                         'custom_domain': 'static.jafron.com/wagtail',
                         'default_acl': 'public-read',
                         'endpoint_url': 'https://jafron.oss-cn-shenzhen.aliyuncs.com',
                         'location': 'media',
                         'querystring_auth': False,
                         'secret_key': '********************'}},
 'staticfiles': {'BACKEND': 'django.contrib.staticfiles.storage.ManifestStaticFilesStorage'}}
TEMPLATES
[{'APP_DIRS': True,
  'BACKEND': 'django.template.backends.django.DjangoTemplates',
  'DIRS': ['/app/headquarters/templates',
           '/app/headquarters/jianfu_main/templates'],
  'OPTIONS': {'context_processors': ['django.template.context_processors.debug',
                                     'django.template.context_processors.request',
                                     'django.contrib.auth.context_processors.auth',
                                     'django.contrib.messages.context_processors.messages'],
              'debug': True}}]
TEST_NON_SERIALIZED_APPS
[]
TEST_RUNNER
'django.test.runner.DiscoverRunner'
THOUSAND_SEPARATOR
','
TIME_FORMAT
'P'
TIME_INPUT_FORMATS
['%H:%M:%S', '%H:%M:%S.%f', '%H:%M']
TIME_ZONE
'UTC'
USE_DEPRECATED_PYTZ
False
USE_I18N
True
USE_L10N
True
USE_THOUSAND_SEPARATOR
False
USE_TZ
True
USE_X_FORWARDED_HOST
False
USE_X_FORWARDED_PORT
False
WAGTAILADMIN_BASE_URL
'http://example.com'
WAGTAILADMIN_RICH_TEXT_EDITORS
{'hallo': {'WIDGET': 'wagtail_hallo.hallo.HalloRichTextArea'},
 'tinymce': {'WIDGET': 'wagtailtinymce.rich_text.TinyMCERichTextArea'}}
WAGTAILSEARCH_BACKENDS
{'default': {'BACKEND': 'wagtail.search.backends.elasticsearch8',
             'INDEX': 'wagtail',
             'INDEX_SETTINGS': {'settings': {'analysis': {'analyzer': {'default': {'type': 'ik_max_word'}}},
                                             'index': {'number_of_shards': 1}}},
             'OPTIONS': {'basic_auth': ('elastic', 'SgK_JHipqNmLl2Ef'),
                         'request_timeout': 5},
             'TIMEOUT': 5,
             'URLS': ['http://elastic:SgK_JHipqNmLl2Ef@10.0.2.150:9200']}}
WAGTAIL_CONTENT_LANGUAGES
[('en', 'English'), ('zh', 'Chinese')]
WAGTAIL_I18N_ENABLED
True
WAGTAIL_SITE_NAME
'headquarters'
WSGI_APPLICATION
'headquarters.wsgi.application'
X_FRAME_OPTIONS
'DENY'
YEAR_MONTH_FORMAT
'F Y'

You’re seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard page generated by the handler for this status code.

XML 地图