TandoorRecipes / recipes

Application for managing recipes, planning meals, building shopping lists and much much more!
https://docs.tandoor.dev
Other
5.59k stars 596 forks source link

Website Importing Error #408

Closed pavelsolar closed 3 years ago

pavelsolar commented 3 years ago

Version

Please provide your current version (can be found on the system page since v0.8.4) Version: 0.14.2

Bug description

When I try to import recipe from any website, I always get following error.

An error occurred while trying to import this recipe!<!DOCTYPE html> KeyError at /data/import/url

KeyError at /data/import/url

'servings'
Request Method: POST
Request URL: http://192.168.100.100:32794/data/import/url
Django Version: 3.1.6
Exception Type: KeyError
Exception Value:
'servings'
Exception Location: /opt/recipes/cookbook/views/data.py, line 125, in import_url
Python Executable: /opt/recipes/venv/bin/python
Python Version: 3.8.7
Python Path:
['/opt/recipes', '/opt/recipes/venv/bin', '/usr/local/lib/python38.zip', '/usr/local/lib/python3.8', '/usr/local/lib/python3.8/lib-dynload', '/opt/recipes/venv/lib/python3.8/site-packages']
Server time: Thu, 18 Feb 2021 20:38:20 +0100

Traceback Switch to copy-and-paste view

  • /opt/recipes/venv/lib/python3.8/site-packages/django/core/handlers/exception.py, line 47, in inner
    1.  response = await sync_to_async(response_for_exception, thread_sensitive=False)(request, exc)
    2.  return response
    3.  return inner
    4.  else:
    5.  @wraps(get_response)
    6.  def inner(request):
    7.  try:
    1.  response = get_response(request)
    1.  except Exception as exc:
    2.  response = response_for_exception(request, exc)
    3.  return response
    4.  return inner
    Variable Value
    exc
    KeyError('servings')
    get_response
    <bound method BaseHandler._get_response of <django.core.handlers.wsgi.WSGIHandler object at 0x7f3d6d1553a0>>
    request
    <WSGIRequest: POST '/data/import/url'>
  • /opt/recipes/venv/lib/python3.8/site-packages/django/core/handlers/base.py, line 181, in _get_response
    1.  if response is None:
    2.  wrapped_callback = self.make_view_atomic(callback)
    3.  # If it is an asynchronous view, run it in a subthread.
    4.  if asyncio.iscoroutinefunction(wrapped_callback):
    5.  wrapped_callback = async_to_sync(wrapped_callback)
    6.  try:
    1.  response = wrapped_callback(request, *callback_args, callback_kwargs)
    1.  except Exception as e:
    2.  response = self.process_exception_by_middleware(e, request)
    3.  if response is None:
    4.  raise
    5.  # Complain if the view returned None (a common error).
    Variable Value
    callback
    <function import_url at 0x7f3d6b8df820>
    callback_args
    ()
    callback_kwargs
    {}
    middleware_method
    <bound method CsrfViewMiddleware.process_view of <django.middleware.csrf.CsrfViewMiddleware object at 0x7f3d6d126370>>
    request
    <WSGIRequest: POST '/data/import/url'>
    response
    None
    self
    <django.core.handlers.wsgi.WSGIHandler object at 0x7f3d6d1553a0>
    wrapped_callback
    <function import_url at 0x7f3d6b8df820>
  • /opt/recipes/venv/lib/python3.8/site-packages/django/contrib/auth/decorators.py, line 21, in _wrapped_view
    1.  that takes the user object and returns True if the user passes.
    2.  """
    3.  def decorator(view_func):
    4.  @wraps(view_func)
    5.  def _wrapped_view(request, *args, *kwargs):
    6.  if test_func(request.user):
    1.  return view_func(request, args, kwargs)
    1.  path = request.build_absolute_uri()
    2.  resolved_login_url = resolve_url(login_url or settings.LOGIN_URL)
    3.  # If the login url is the same scheme and net location then just
    4.  # use the path as the "next" url.
    5.  login_scheme, login_netloc = urlparse(resolved_login_url)[:2]
    6.  current_scheme, current_netloc = urlparse(path)[:2]
    Variable Value
    args
    ()
    kwargs
    {}
    login_url
    'view_no_group'
    redirect_field_name
    'next'
    request
    <WSGIRequest: POST '/data/import/url'>
    test_func
    <function group_required.<locals>.in_groups at 0x7f3d6b8df4c0>
    view_func
    <function import_url at 0x7f3d6b8df790>
  • /usr/local/lib/python3.8/contextlib.py, line 75, in inner
    1.  """
    2.  return self
    3.  def call(self, func):
    4.  @wraps(func)
    5.  def inner(*args, kwds):
    6.  with self._recreate_cm():
    1.  return func(*args, **kwds)
    1.  return inner
    2. class _GeneratorContextManagerBase:
    3.  """Shared functionality for @contextmanager and @asynccontextmanager."""
    Variable Value
    args
    (<WSGIRequest: POST '/data/import/url'>,)
    func
    <function import_url at 0x7f3d6b8df700>
    kwds
    {}
    self
    <django.db.transaction.Atomic object at 0x7f3d6b8cd2b0>
  • /opt/recipes/cookbook/views/data.py, line 125, in import_url
    1.  if request.method == 'POST':
    2.  data = json.loads(request.body)
    3.  recipe = Recipe.objects.create(
    4.  name=data['name'],
    5.  waiting_time=data['cookTime'],
    6.  working_time=data['prepTime'],
    1.  servings=data['servings'],
    1.  internal=True,
    2.  created_by=request.user,
    3.  )
    4.  step = Step.objects.create(
    5.  instruction=data['recipeInstructions'],
    Variable Value
    data
    {'all_keywords': False, 'cookTime': 0, 'image': 'https://www.kucharkaprodceru.cz/wp-content/uploads/2018/02/lasagne-recept.jpg&#x27;, 'keywords': [], 'name': 'Lasagne', 'prepTime': 0, 'recipeIngredient': [{'amount': 0, 'ingredient': {'id': 44714, 'text': 'špetka soli'}, 'note': '', 'original': 'špetka soli', 'unit': {'id': 41613, 'text': ''}}, {'amount': 500, 'ingredient': {'id': 14218, 'text': 'mléka'}, 'note': '', 'original': '500 ml mléka', 'unit': {'id': 56698, 'text': 'ml'}}, {'amount': 2, 'ingredient': {'id': 99917, 'text': 'lžíce hladké mouky'}, 'note': '', 'original': '2 vrchovatá lžíce hladké mouky', 'unit': {'id': 22420, 'text': 'vrchovatá'}}, {'amount': 2, 'ingredient': {'id': 95331, 'text': '1 lžíce másla'}, 'note': '', 'original': '2 + 1 lžíce másla', 'unit': {'id': 97392, 'text': '+'}}, {'amount': 200, 'ingredient': {'id': 15931, 'text': 'čerstvé mozzarelly'}, 'note': '', 'original': '200 g čerstvé mozzarelly', 'unit': {'id': 76480, 'text': 'g'}}, {'amount': 50, 'ingredient': {'id': 49848, 'text': 'strouhaného parmazánu'}, 'note': '', 'original': '50 g strouhaného parmazánu', 'unit': {'id': 10400, 'text': 'g'}}, {'amount': 2, 'ingredient': {'id': 90184, 'text': 'boloňské omáčky'}, 'note': '', 'original': '2 dávky boloňské omáčky ', 'unit': {'id': 64790, 'text': 'dávky'}}, {'amount': 350, 'ingredient': {'id': 93519, 'text': 'suchých lasagní'}, 'note': '', 'original': '350 g suchých lasagní', 'unit': {'id': 89800, 'text': 'g'}}, {'amount': 0, 'ingredient': {'id': 63919, 'text': 'špetka čerstvě nastrouhaného ' 'muškátového květu nebo oříšku'}, 'note': '', 'original': 'špetka čerstvě nastrouhaného muškátového ' 'květu nebo oříšku', 'unit': {'id': 28474, 'text': ''}}], 'recipeInstructions': 'Nejprve uvařte boloňskou omáčku podle samostatného ' 'receptu.\n' 'Jakmile bude omáčka témeř dovařená a bude jí chybět už ' 'jen posledních 30 minut, pusťte se do přípravy ' 'bešamelu: V kastrůlku rozehřejte 2 lžíce másla, ' 'jakmile se rozpustí a zabublá, vsypte mouku, nechte ' 'zpěnit a minutu intenzivně míchejte metličkou, aby se ' 'mouka nepřipálila. Postupně v několika dávkách začněte ' 'přilévat studené mléko a obsah kastrůlku přitom ' 'důkladně dál prošlehávejte metličkou. Vše přiveďte k ' 'mírnému varu, osolte, okořeňte a nechte pozvolna 15 ' 'minut vařit. Každou chvíli omáčku promíchejte, mouka i ' 'mléko se snadno připalují. Hotovou omáčku odstavte a ' 'vmíchejte do ní lžíci másla.\n' 'Troubu začněte předehřívat na 180 stupňů. Na dno formy ' 'na pečení nebo hran… <trimmed 5501 bytes string>
    request
    <WSGIRequest: POST '/data/import/url'>


Request information

USER

PavelS

GET

No GET data

POST

No POST data

FILES

No FILES data

Variable Value
lang
'cs'
remember_web_59ba36addc2b2f9401580f014c7f58ea4e30989d
'1%7Ck4DUty9RxXyIx0REQ9Q8uYba3VebfxMOcnWeZd6fbMPQis5kvigCzDw2u86d%7C%242y%2410%24CMRwimde4KSw4BDlAGruQe2cMqo0WdZfIHUYFMe5nxtxvk3z1nR5C'
back_to_admin
'http%3A//192.168.100.100/mwnew/admin/view%3Apackages'
_gcl_au
'1.1.1063777497.1611343617'
_hjid
'51173a59-cbf0-418f-8a0f-c51fdd6b91a0'
_ga
'GA1.1.1307133437.1611343617'
remeber
'1'
qtoken
'1aab99ac91c6918e4fdf5b40dcf67be2'
qtoken_account
'UGF2ZWxT'
grocy_session
'YacAjlZxf2xwn7IgiwlmBws76nwZVu3cp2vorx3v4ChVGvCTKw'
NAS_PW_STATUS
'0'
NAS_USER
'PavelS'
NAS_SID
'n71tkswl'
home
'1'
nas_1_u
'UGF2ZWxT'
session
'cf77036f-afef-45a1-8590-1bca6b3e0cbc'
QT
'1613676562769'
csrftoken
'PiblGI9pQblF3Sq4fpbn3f4XtUT887pVhHpv6O9MD1FI54byMlJJOybFwag08a0R'
sessionid
'ozhm10yalb8ep6dk5y4sq28s7c0d44n0'
django_language
'en'

META

Variable Value
CONTENT_LENGTH
'3415'
CONTENT_TYPE
'application/json;charset=UTF-8'
CSRF_COOKIE
'PiblGI9pQblF3Sq4fpbn3f4XtUT887pVhHpv6O9MD1FI54byMlJJOybFwag08a0R'
HTTP_ACCEPT
'application/json, text/plain, /'
HTTP_ACCEPT_ENCODING
'gzip, deflate'
HTTP_ACCEPT_LANGUAGE
'cs,en;q=0.9,sk;q=0.8,de;q=0.7,pl;q=0.6'
HTTP_CONNECTION
'keep-alive'
HTTP_COOKIE
('lang=cs; ' 'remember_web_59ba36addc2b2f9401580f014c7f58ea4e30989d=1%7Ck4DUty9RxXyIx0REQ9Q8uYba3VebfxMOcnWeZd6fbMPQis5kvigCzDw2u86d%7C%242y%2410%24CMRwimde4KSw4BDlAGruQe2cMqo0WdZfIHUYFMe5nxtxvk3z1nR5C; ' 'back_to_admin=http%3A//192.168.100.100/mwnew/admin/view%3Apackages; ' '_gcl_au=1.1.1063777497.1611343617; ' '_hjid=51173a59-cbf0-418f-8a0f-c51fdd6b91a0; _ga=GA1.1.1307133437.1611343617; ' 'remeber=1; qtoken=1aab99ac91c6918e4fdf5b40dcf67be2; qtoken_account=UGF2ZWxT; ' 'grocy_session=YacAjlZxf2xwn7IgiwlmBws76nwZVu3cp2vorx3v4ChVGvCTKw; ' 'NAS_PW_STATUS=0; NAS_USER=PavelS; NAS_SID=n71tkswl; home=1; ' 'nas_1_u=UGF2ZWxT; session=cf77036f-afef-45a1-8590-1bca6b3e0cbc; ' 'QT=1613676562769; ' 'csrftoken=PiblGI9pQblF3Sq4fpbn3f4XtUT887pVhHpv6O9MD1FI54byMlJJOybFwag08a0R; ' 'sessionid=ozhm10yalb8ep6dk5y4sq28s7c0d44n0; django_language=en')
HTTP_HOST
'192.168.100.100:32794'
HTTP_ORIGIN
'http://192.168.100.100:32794&#x27;
HTTP_REFERER
'http://192.168.100.100:32794/data/import/url&#x27;
HTTP_USER_AGENT
('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like ' 'Gecko) Chrome/88.0.4324.150 Safari/537.36')
HTTP_X_CSRFTOKEN
'**'
HTTP_X_REQUESTED_WITH
'XMLHttpRequest'
PATH_INFO
'/data/import/url'
QUERY_STRING
''
RAW_URI
'/data/import/url'
REMOTE_ADDR
'192.168.100.108'
REMOTE_PORT
'49558'
REQUEST_METHOD
'POST'
SCRIPT_NAME
''
SERVER_NAME
'0.0.0.0'
SERVER_PORT
'8080'
SERVER_PROTOCOL
'HTTP/1.1'
SERVER_SOFTWARE
'gunicorn/20.0.4'
gunicorn.socket
<socket.socket fd=9, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('10.0.3.3', 8080), raddr=('192.168.100.108', 49558)>
wsgi.errors
<gunicorn.http.wsgi.WSGIErrorsWrapper object at 0x7f3d6a4c97f0>
wsgi.file_wrapper
<class 'gunicorn.http.wsgi.FileWrapper'>
wsgi.input
<gunicorn.http.body.Body object at 0x7f3d6a4c91f0>
wsgi.input_terminated
True
wsgi.multiprocess
False
wsgi.multithread
False
wsgi.run_once
False
wsgi.url_scheme
'http'
wsgi.version
(1, 0)

Settings

Using settings module recipes.settings

Setting Value
ABSOLUTE_URL_OVERRIDES
{}
ACCOUNT_ADAPTER
'cookbook.helper.AllAuthCustomAdapter'
ADMINS
[]
ALLOWED_HOSTS
['*']
APPEND_SLASH
True
AUTHENTICATION_BACKENDS
['django.contrib.auth.backends.ModelBackend', 'allauth.account.auth_backends.AuthenticationBackend']
AUTH_PASSWORD_VALIDATORS
'**'
AUTH_USER_MODEL
'auth.User'
BASE_DIR
'/opt/recipes'
CACHES
{'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'}}
CACHE_MIDDLEWARE_ALIAS
'default'
CACHE_MIDDLEWARE_KEY_PREFIX
'****'
CACHE_MIDDLEWARE_SECONDS
600
COMMENT_PREF_DEFAULT
True
CORS_ORIGIN_ALLOW_ALL
True
CRISPY_TEMPLATE_PACK
'bootstrap4'
CSRF_COOKIE_AGE
31449600
CSRF_COOKIE_DOMAIN
None
CSRF_COOKIE_HTTPONLY
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
[]
CSRF_USE_SESSIONS
False
DATABASES
{'default': {'ATOMIC_REQUESTS': False, 'AUTOCOMMIT': True, 'CONN_MAX_AGE': 0, 'ENGINE': 'django.db.backends.sqlite3', 'HOST': None, 'NAME': 'db.sqlite3', 'OPTIONS': {}, 'PASSWORD': '****', 'PORT': None, 'TEST': {'CHARSET': None, 'COLLATION': None, 'MIGRATE': True, 'MIRROR': None, 'NAME': None}, 'TIME_ZONE': None, 'USER': None}}
DATABASE_ROUTERS
[]
DATA_UPLOAD_MAX_MEMORY_SIZE
2621440
DATA_UPLOAD_MAX_NUMBER_FIELDS
1000
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_CHARSET
'utf-8'
DEFAULT_EXCEPTION_REPORTER
'django.views.debug.ExceptionReporter'
DEFAULT_EXCEPTION_REPORTER_FILTER
'django.views.debug.SafeExceptionReporterFilter'
DEFAULT_FILE_STORAGE
'django.core.files.storage.FileSystemStorage'
DEFAULT_FROM_EMAIL pre>&#x27;webmaster@localhost&#x27;</pre
DEFAULT_HASHING_ALGORITHM
'sha256'
DEFAULT_INDEX_TABLESPACE
''
DEFAULT_TABLESPACE
''
DEMO
False
DISALLOWED_USER_AGENTS
[]
DJANGO_TABLES2_PAGE_RANGE
8
DJANGO_TABLES2_TEMPLATE
'cookbook/templates/generic/table_template.html'
EMAIL_BACKEND
'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST
'localhost'
EMAIL_HOST_PASSWORD
'****'
EMAIL_HOST_USER
''
EMAIL_PORT
25
EMAIL_SSL_CERTFILE
None
EMAIL_SSL_KEYFILE
'****'
EMAIL_SUBJECT_PREFIX
'[Django] '
EMAIL_TIMEOUT
None
EMAIL_USE_LOCALTIME
False
EMAIL_USE_SSL
False
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'
FRACTION_PREF_DEFAULT
False
GUNICORN_MEDIA
True
IGNORABLE_404_URLS
[]
INSTALLED_APPS
['dal', 'dal_select2', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.sites', 'django.contrib.staticfiles', 'django_tables2', 'django_filters', 'crispy_forms', 'emoji_picker', 'rest_framework', 'rest_framework.authtoken', 'django_cleanup.apps.CleanupConfig', 'webpack_loader', 'django_js_reverse', 'allauth', 'allauth.account', 'allauth.socialaccount', 'cookbook.apps.CookbookConfig']
INTERNAL_IPS
['127.0.0.1']
JS_REVERSE_OUTPUT_PATH
'/opt/recipes/cookbook/static/django_js_reverse'
LANGUAGES
[('ca', 'Catalan'), ('cs', 'Czech'), ('nl', 'Dutch'), ('en', 'English'), ('fr', 'French'), ('de', 'German'), ('it', 'Italian'), ('lv', 'Latvian'), ('es', 'Spanish')]
LANGUAGES_BIDI
['he', 'ar', 'ar-dz', 'fa', 'ur']
LANGUAGE_CODE
'en'
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
{}
LOGGING_CONFIG
'logging.config.dictConfig'
LOGIN_REDIRECT_URL
'index'
LOGIN_URL
'/accounts/login/'
LOGOUT_REDIRECT_URL
'index'
MANAGERS
[]
MEDIA_ROOT
'/opt/recipes/mediafiles'
MEDIA_URL
'/media/'
MESSAGE_STORAGE
'django.contrib.messages.storage.fallback.FallbackStorage'
MESSAGE_TAGS
{40: 'danger'}
MIDDLEWARE
['django.middleware.security.SecurityMiddleware', 'whitenoise.middleware.WhiteNoiseMiddleware', '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.locale.LocaleMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware']
MIGRATION_MODULES
{}
MONTH_DAY_FORMAT
'F j'
NUMBER_GROUPING
0
PASSWORD_HASHERS
'****'
PASSWORD_RESET_TIMEOUT
'****'
PASSWORD_RESET_TIMEOUT_DAYS
'****'
PREPEND_WWW
False
REST_FRAMEWORK
{'DEFAULT_AUTHENTICATION_CLASSES': ('rest_framework.authentication.SessionAuthentication', 'rest_framework.authentication.TokenAuthentication', 'rest_framework.authentication.BasicAuthentication'), 'DEFAULT_PERMISSION_CLASSES': ['rest_framework.permissions.IsAuthenticated']}
REVERSE_PROXY_AUTH
False
ROOT_URLCONF
'recipes.urls'
SECRET_KEY
'****'
SECURE_BROWSER_XSS_FILTER
False
SECURE_CONTENT_TYPE_NOSNIFF
True
SECURE_HSTS_INCLUDE_SUBDOMAINS
False
SECURE_HSTS_PRELOAD
False
SECURE_HSTS_SECONDS
0
SECURE_PROXY_SSL_HEADER
('HTTP_X_FORWARDED_PROTO', 'https')
SECURE_REDIRECT_EXEMPT
[]
SECURE_REFERRER_POLICY
'same-origin'
SECURE_SSL_HOST
None
SECURE_SSL_REDIRECT
False
SERVER_EMAIL pre>&#x27;root@localhost&#x27;</pre
SESSION_CACHE_ALIAS
'default'
SESSION_COOKIE_AGE
31536000
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
'recipes.settings'
SHOPPING_MIN_AUTOSYNC_INTERVAL
5
SHORT_DATETIME_FORMAT
'm/d/Y P'
SHORT_DATE_FORMAT
'm/d/Y'
SIGNING_BACKEND
'django.core.signing.TimestampSigner'
SILENCED_SYSTEM_CHECKS
[]
SITE_ID
1
SOCIALACCOUNT_PROVIDERS
{}
SOCIAL_PROVIDERS
[]
STATICFILES_DIRS
[]
STATICFILES_FINDERS
['django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder']
STATICFILES_STORAGE
'whitenoise.storage.CompressedManifestStaticFilesStorage'
STATIC_ROOT
'/opt/recipes/staticfiles'
STATIC_URL
'/static/'
STICKY_NAV_PREF_DEFAULT
True
TEMPLATES
[{'APP_DIRS': True, 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': ['/opt/recipes/templates', '/opt/recipes/cookbook/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', 'django.template.context_processors.media']}}]
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
'Europe/Berlin'
USE_I18N
True
USE_L10N
True
USE_THOUSAND_SEPARATOR
False
USE_TZ
True
USE_X_FORWARDED_HOST
False
USE_X_FORWARDED_PORT
False
VUE_DIR
'/opt/recipes/vue'
WEBPACK_LOADER
{'DEFAULT': {'BUNDLE_DIR_NAME': 'vue/', 'CACHE': False, 'IGNORE': ['.+\.hot-update.js', '.+\.map'], 'POLL_INTERVAL': 0.1, 'STATS_FILE': '/opt/recipes/vue/webpack-stats.json', 'TIMEOUT': None}}
WSGI_APPLICATION
'recipes.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.

vabene1111 commented 3 years ago

should be fixed with 0.14.3