'book'
Request Method: | GET |
---|---|
Request URL: | https://kelebooks.com/book/fredrik-bakman-medvezhii-ugol/?page=1 |
Django Version: | 4.0 |
Exception Type: | KeyError |
Exception Value: | 'book' |
Exception Location: | /home/dortes/kelebooks/env/lib/python3.10/site-packages/django/contrib/sessions/backends/base.py, line 50, in __getitem__ |
Python Executable: | /home/dortes/kelebooks/env/bin/python |
Python Version: | 3.10.13 |
Python Path: | ['/home/dortes/kelebooks', '/home/dortes/kelebooks/env/bin', '/usr/lib/python310.zip', '/usr/lib/python3.10', '/usr/lib/python3.10/lib-dynload', '/home/dortes/kelebooks/env/lib/python3.10/site-packages'] |
Server time: | Fri, 29 Mar 2024 13:20:13 +0000 |
/home/dortes/kelebooks/env/lib/python3.10/site-packages/django/core/handlers/exception.py
, line 47, in inner
response = await sync_to_async(response_for_exception, thread_sensitive=False)(request, exc)
return response
return inner
else:
@wraps(get_response)
def inner(request):
try:
response = get_response(request)…
except Exception as exc:
response = response_for_exception(request, exc)
return response
return inner
Variable | Value |
---|---|
exc | KeyError('book') |
get_response | <bound method BaseHandler._get_response of <django.core.handlers.wsgi.WSGIHandler object at 0x7fb12ca34280>> |
request | <WSGIRequest: GET '/book/fredrik-bakman-medvezhii-ugol/?page=1'> |
/home/dortes/kelebooks/env/lib/python3.10/site-packages/django/core/handlers/base.py
, line 181, in _get_response
if response is None:
wrapped_callback = self.make_view_atomic(callback)
# If it is an asynchronous view, run it in a subthread.
if asyncio.iscoroutinefunction(wrapped_callback):
wrapped_callback = async_to_sync(wrapped_callback)
try:
response = wrapped_callback(request, *callback_args, **callback_kwargs)…
except Exception as e:
response = self.process_exception_by_middleware(e, request)
if response is None:
raise
# Complain if the view returned None (a common error).
Variable | Value |
---|---|
callback | <function View.as_view.<locals>.view at 0x7fb12b878d30> |
callback_args | () |
callback_kwargs | {'slug': 'fredrik-bakman-medvezhii-ugol'} |
middleware_method | <bound method CsrfViewMiddleware.process_view of <CsrfViewMiddleware get_response=convert_exception_to_response.<locals>.inner>> |
request | <WSGIRequest: GET '/book/fredrik-bakman-medvezhii-ugol/?page=1'> |
response | None |
self | <django.core.handlers.wsgi.WSGIHandler object at 0x7fb12ca34280> |
wrapped_callback | <function View.as_view.<locals>.view at 0x7fb12b878d30> |
/home/dortes/kelebooks/env/lib/python3.10/site-packages/django/views/generic/base.py
, line 69, in view
self = cls(**initkwargs)
self.setup(request, *args, **kwargs)
if not hasattr(self, 'request'):
raise AttributeError(
"%s instance has no 'request' attribute. Did you override "
"setup() and forget to call super()?" % cls.__name__
)
return self.dispatch(request, *args, **kwargs)…
view.view_class = cls
view.view_initkwargs = initkwargs
# __name__ and __qualname__ are intentionally left unchanged as
# view_class should be used to robustly determine the name of the view
# instead.
Variable | Value |
---|---|
args | () |
cls | <class 'books.views.BookView'> |
initkwargs | {} |
kwargs | {'slug': 'fredrik-bakman-medvezhii-ugol'} |
request | <WSGIRequest: GET '/book/fredrik-bakman-medvezhii-ugol/?page=1'> |
self | <books.views.BookView object at 0x7fb12b769300> |
/home/dortes/kelebooks/env/lib/python3.10/site-packages/django/views/generic/base.py
, line 101, in dispatch
# Try to dispatch to the right method; if a method doesn't exist,
# defer to the error handler. Also defer to the error handler if the
# request method isn't on the approved list.
if request.method.lower() in self.http_method_names:
handler = getattr(self, request.method.lower(), self.http_method_not_allowed)
else:
handler = self.http_method_not_allowed
return handler(request, *args, **kwargs)…
def http_method_not_allowed(self, request, *args, **kwargs):
logger.warning(
'Method Not Allowed (%s): %s', request.method, request.path,
extra={'status_code': 405, 'request': request}
)
Variable | Value |
---|---|
args | () |
handler | <bound method BookView.get of <books.views.BookView object at 0x7fb12b769300>> |
kwargs | {'slug': 'fredrik-bakman-medvezhii-ugol'} |
request | <WSGIRequest: GET '/book/fredrik-bakman-medvezhii-ugol/?page=1'> |
self | <books.views.BookView object at 0x7fb12b769300> |
/home/dortes/kelebooks/books/views.py
, line 74, in get
except:
return HttpResponseRedirect("/")
self.object = self.get_object()
context = self.get_context_data(object=self.object)…
if self.request.user.is_authenticated:
current_user = Reader.objects.get_or_create(user=self.request.user)[0]
Variable | Value |
---|---|
args | (<WSGIRequest: GET '/book/fredrik-bakman-medvezhii-ugol/?page=1'>,) |
book_object | <Book: Медвежий угол> |
kwargs | {'slug': 'fredrik-bakman-medvezhii-ugol'} |
self | <books.views.BookView object at 0x7fb12b769300> |
/home/dortes/kelebooks/books/views.py
, line 141, in get_context_data
if int(page) == 1 and self.request.GET:
if self.request.user.is_authenticated:
current_user = Reader.objects.get_or_create(user=self.request.user)[0]
json_data = current_user.books
del json_data[str(context['object'].id)]
current_user.save()
else:
del self.request.session['book'][str(context['object'].id)]…
try:
Paginated = paginator.page(page)
Variable | Value |
---|---|
PaginatedInstance | ['<h2><p>Фредрик Бакман', '</p>', '\n<p>Медвежий угол', '</p>', '\n</h2><section><p>© 2016, Fredrik Backman', '</p>', '\n<p>© Издание на русском языке, перевод на русский язык, оформление', '</p>', '\n' '<h3>* * *</h3></section><section><blockquote><p><em>Бьорнстад\xa0– ' 'выдуманный город. Все персонажи и события вымышлены, а совпадения ' 'случайны.</em>', '</p>', '\n' '</blockquote><blockquote><p><em>Моей бабушке Саге Бакман, которая привила ' 'мне любовь к спорту. Жизнь без него была бы ужасно скучной. Надеюсь, в баре ' 'на небесах подают хороший сухой мартини, а Уимблдон всегда показывают на ' 'большом экране.</em>', '</p>', '\n<p><em>Мне тебя не хватает</em>', '</p>', '\n' '</blockquote><blockquote><p><em>Неде Шафти-Бакман, моему самому веселому и ' 'умному другу. За то, что помогаешь мне воспарить, когда я в этом нуждаюсь, и ' 'удерживаешь на земле, когда я этого заслуживаю. Ашегетам</em>', '</p>', '\n</blockquote><hr/></section><section><h2><p>1', '</p>', '\n' '</h2><p>Как-то раз вечером в конце марта один подросток взял двустволку, ' 'пошел в лес, приставил дуло ко лбу человека и спустил курок.', '</p>', '\n<p>Перед вами история о том, как мы до этого дошли.', '</p>', '\n</section><section><h2><p>2', '</p>', '\n</h2><p><em>Банк-банк-банк-банк-банк.</em>', '</p>', '\n' '<hr/><p>Сейчас начало марта, ничего еще не случилось. Наступила пятница, все ' 'в предвкушении. Завтра в Бьорнстаде команда юниоров играет в решающем ' 'матче\xa0– молодежном полуфинале страны. Вы скажете, ну и что? Кому ну и ' 'что, а кому ничего важнее на свете нет. Если вы, конечно, живете в ' 'Бьорнстаде.', '</p>', '\n<hr/><p><em>Банк. Банк. Банк-банк-банк.</em>', '</p>', '\n' '<hr/><p>Город, как всегда, просыпается рано. Что поделаешь, маленьким ' 'городкам приходится давать себе фору, надо как-то выживать в этом мире. ' 'Ровные ряды автомобилей на фабричной парковке уже успели покрыться снегом, а ' 'вереницы людей клюют носом и молча ждут своей очереди к электронному ' 'контролеру, чтобы зафиксировать факт своего присутствия при полном его ' 'отсутствии. На автопилоте они отряхивают с ботинок налипшую грязь и ' 'переговариваются голосами автоответчиков в ожидании, пока кофеин, никотин ' 'или сахар доберутся до цели и обеспечат их сонным телам нормальную ' 'жизнедеятельность до первого перерыва на кофе.', '</p>', '\n' '<p>Электрички отправляются с вокзала к большим населенным пунктам по ту ' 'сторону леса, заиндевелые варежки стучат по обогревателю, а ругательства ' 'звучат такие, которые обычно позволяют себе лишь в доску пьяные, умирающие ' 'либо сидящие ранним утром за рулем насквозь промерзшего «пежо».', '</p>', '\n' '<hr/><p>Если замолчать и прислушаться, можно услышать: <em>«Банк-банк-банк. ' 'Банк. Банк».</em>', '</p>', '\n' '<hr/><p>Проснувшись, Мая обвела взглядом свою комнату: на стенах вперемежку ' 'висят карандашные рисунки и билеты с концертов в больших городах, на которых ' 'она когда-то побывала: их не так много, как ей бы хотелось, но гораздо ' 'больше, чем позволяли родители. Мая еще лежала в кровати в пижаме, перебирая ' 'струны гитары. Она обожает свою гитару! Ей нравится чувствовать, как ' 'инструмент давит на тело, как отзывается дерево, когда она постукивает по ' 'корпусу, как струны впиваются в отекшие после сна подушечки пальцев. Простые ' 'аккорды, нежные переходы\xa0– чистое наслаждение. Мае пятнадцать лет, она ' 'часто влюблялась, но первой ее любовью была гитара. Она помогла ей, дочери ' 'спортивного директора хоккейного клуба, выжить в этом городе, окруженном ' 'лесной чащей.', '</p>', '\n' '<p>Мая ненавидит хоккей, но понимает отца. Спорт\xa0– это такой же ' 'инструмент, как гитара. Мама любит шептать ей на ухо: «Никогда не доверяй ' 'человеку, в чьей жизни нет того, что он любит без оглядки». Мама любит ' 'мужчину, сердце которого отдано городку, где все помешаны на спорте. Главное ' 'для этого города\xa0– хоккей, и, что бы там ни говорили, Бьорнстад\xa0– ' 'место надежное. Всегда знаешь, чего от него ждать. День за днем одно и… <trimmed 184079 bytes string> |
__class__ | <class 'books.views.BookView'> |
context | {'book': <Book: Медвежий угол>, 'object': <Book: Медвежий угол>, 'view': <books.views.BookView object at 0x7fb12b769300>} |
full_text | ('<h2><p>Фредрик Бакман</p>\n' '<p>Медвежий угол</p>\n' '</h2><section><p>© 2016, Fredrik Backman</p>\n' '<p>© Издание на русском языке, перевод на русский язык, оформление</p>\n' '<h3>* * *</h3></section><section><blockquote><p><em>Бьорнстад\xa0– ' 'выдуманный город. Все персонажи и события вымышлены, а совпадения ' 'случайны.</em></p>\n' '</blockquote><blockquote><p><em>Моей бабушке Саге Бакман, которая привила ' 'мне любовь к спорту. Жизнь без него была бы ужасно скучной. Надеюсь, в баре ' 'на небесах подают хороший сухой мартини, а Уимблдон всегда показывают на ' 'большом экране.</em></p>\n' '<p><em>Мне тебя не хватает</em></p>\n' '</blockquote><blockquote><p><em>Неде Шафти-Бакман, моему самому веселому и ' 'умному другу. За то, что помогаешь мне воспарить, когда я в этом нуждаюсь, и ' 'удерживаешь на земле, когда я этого заслуживаю. Ашегетам</em></p>\n' '</blockquote><hr/></section><section><h2><p>1</p>\n' '</h2><p>Как-то раз вечером в конце марта один подросток взял двустволку, ' 'пошел в лес, приставил дуло ко лбу человека и спустил курок.</p>\n' '<p>Перед вами история о том, как мы до этого дошли.</p>\n' '</section><section><h2><p>2</p>\n' '</h2><p><em>Банк-банк-банк-банк-банк.</em></p>\n' '<hr/><p>Сейчас начало марта, ничего еще не случилось. Наступила пятница, все ' 'в предвкушении. Завтра в Бьорнстаде команда юниоров играет в решающем ' 'матче\xa0– молодежном полуфинале страны. Вы скажете, ну и что? Кому ну и ' 'что, а кому ничего важнее на свете нет. Если вы, конечно, живете в ' 'Бьорнстаде.</p>\n' '<hr/><p><em>Банк. Банк. Банк-банк-банк.</em></p>\n' '<hr/><p>Город, как всегда, просыпается рано. Что поделаешь, маленьким ' 'городкам приходится давать себе фору, надо как-то выживать в этом мире. ' 'Ровные ряды автомобилей на фабричной парковке уже успели покрыться снегом, а ' 'вереницы людей клюют носом и молча ждут своей очереди к электронному ' 'контролеру, чтобы зафиксировать факт своего присутствия при полном его ' 'отсутствии. На автопилоте они отряхивают с ботинок налипшую грязь и ' 'переговариваются голосами автоответчиков в ожидании, пока кофеин, никотин ' 'или сахар доберутся до цели и обеспечат их сонным телам нормальную ' 'жизнедеятельность до первого перерыва на кофе.</p>\n' '<p>Электрички отправляются с вокзала к большим населенным пунктам по ту ' 'сторону леса, заиндевелые варежки стучат по обогревателю, а ругательства ' 'звучат такие, которые обычно позволяют себе лишь в доску пьяные, умирающие ' 'либо сидящие ранним утром за рулем насквозь промерзшего «пежо».</p>\n' '<hr/><p>Если замолчать и прислушаться, можно услышать: <em>«Банк-банк-банк. ' 'Банк. Банк».</em></p>\n' '<hr/><p>Проснувшись, Мая обвела взглядом свою комнату: на стенах вперемежку ' 'висят карандашные рисунки и билеты с концертов в больших городах, на которых ' 'она когда-то побывала: их не так много, как ей бы хотелось, но гораздо ' 'больше, чем позволяли родители. Мая еще лежала в кровати в пижаме, перебирая ' 'струны гитары. Она обожает свою гитару! Ей нравится чувствовать, как ' 'инструмент давит на тело, как отзывается дерево, когда она постукивает по ' 'корпусу, как струны впиваются в отекшие после сна подушечки пальцев. Простые ' 'аккорды, нежные переходы\xa0– чистое наслаждение. Мае пятнадцать лет, она ' 'часто влюблялась, но первой ее любовью была гитара. Она помогла ей, дочери ' 'спортивного директора хоккейного клуба, выжить в этом городе, окруженном ' 'лесной чащей.</p>\n' '<p>Мая ненавидит хоккей, но понимает отца. Спорт\xa0– это такой же ' 'инструмент, как гитара. Мама любит шептать ей на ухо: «Никогда не доверяй ' 'человеку, в чьей жизни нет того, что он любит без оглядки». Мама любит ' 'мужчину, сердце которого отдано городку, где все помешаны на спорте. Главное ' 'для этого города\xa0– хоккей, и, что бы там ни говорили, Бьорнстад\xa0– ' 'место надежное. Всегда знаешь, чего от него ждать. День за днем одно и то ' 'же.</p>\n' '<hr/><p><em>Банк.</em></p>\n' '<hr/><p>Бьорнстад расположен ни с чем не рядом и даже на карте выглядит ' 'неестественно. Как будто … <trimmed 178099 bytes string> |
kwargs | {'object': <Book: Медвежий угол>} |
page | '1' |
paginator | <django.core.paginator.Paginator object at 0x7fb12b76b1c0> |
self | <books.views.BookView object at 0x7fb12b769300> |
/home/dortes/kelebooks/env/lib/python3.10/site-packages/django/contrib/sessions/backends/base.py
, line 50, in __getitem__
self.modified = False
self.serializer = import_string(settings.SESSION_SERIALIZER)
def __contains__(self, key):
return key in self._session
def __getitem__(self, key):
return self._session[key]…
def __setitem__(self, key, value):
self._session[key] = value
self.modified = True
def __delitem__(self, key):
Variable | Value |
---|---|
key | 'book' |
self | <django.contrib.sessions.backends.db.SessionStore object at 0x7fb12b769e10> |
AnonymousUser
Variable | Value |
---|---|
page | '1' |
No POST data
No FILES data
No cookie data
Variable | Value |
---|---|
HTTP_ACCEPT | '*/*' |
HTTP_CONNECTION | 'close' |
HTTP_HOST | 'kelebooks.com' |
HTTP_USER_AGENT | 'claudebot' |
HTTP_X_FORWARDED_FOR | '3.233.221.42' |
HTTP_X_FORWARDED_PROTO | 'https' |
HTTP_X_REAL_IP | '3.233.221.42' |
PATH_INFO | '/book/fredrik-bakman-medvezhii-ugol/' |
QUERY_STRING | 'page=1' |
RAW_URI | '/book/fredrik-bakman-medvezhii-ugol/?page=1' |
REMOTE_ADDR | '' |
REQUEST_METHOD | 'GET' |
SCRIPT_NAME | '' |
SERVER_NAME | 'kelebooks.com' |
SERVER_PORT | '443' |
SERVER_PROTOCOL | 'HTTP/1.0' |
SERVER_SOFTWARE | 'gunicorn/21.2.0' |
gunicorn.socket | <socket.socket fd=4, family=AddressFamily.AF_UNIX, type=SocketKind.SOCK_STREAM, proto=0, laddr=/run/kelebooks.sock> |
wsgi.errors | <gunicorn.http.wsgi.WSGIErrorsWrapper object at 0x7fb12b768fd0> |
wsgi.file_wrapper | <class 'gunicorn.http.wsgi.FileWrapper'> |
wsgi.input | <gunicorn.http.body.Body object at 0x7fb12b76a470> |
wsgi.input_terminated | True |
wsgi.multiprocess | False |
wsgi.multithread | False |
wsgi.run_once | False |
wsgi.url_scheme | 'https' |
wsgi.version | (1, 0) |
thisbook.settings
Setting | Value |
---|---|
ABSOLUTE_URL_OVERRIDES | {} |
ADMINS | [] |
ALLOWED_HOSTS | ['192.168.100.75', 'kelebooks.com', 'www.kelebooks.com', '127.0.0.1'] |
APPEND_SLASH | True |
AUTHENTICATION_BACKENDS | ['django.contrib.auth.backends.ModelBackend'] |
AUTH_PASSWORD_VALIDATORS | '********************' |
AUTH_USER_MODEL | 'auth.User' |
BASE_DIR | PosixPath('/home/dortes/kelebooks') |
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_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': '', 'NAME': PosixPath('/home/dortes/kelebooks/db.sqlite3'), 'OPTIONS': {}, 'PASSWORD': '********************', 'PORT': '', 'TEST': {'CHARSET': None, 'COLLATION': None, 'MIGRATE': True, 'MIRROR': None, 'NAME': None}, 'TIME_ZONE': None, 'USER': ''}} |
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_AUTO_FIELD | 'django.db.models.BigAutoField' |
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 | 'webmaster@localhost' |
DEFAULT_INDEX_TABLESPACE | '' |
DEFAULT_TABLESPACE | '' |
DISALLOWED_USER_AGENTS | [] |
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' |
HTML_MINIFY | True |
IGNORABLE_404_URLS | [] |
INSTALLED_APPS | ['django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.sites', 'django.contrib.sitemaps', 'star_ratings', 'hcaptcha_field', 'books'] |
INTERNAL_IPS | [] |
LANGUAGES | [('af', 'Afrikaans'), ('ar', 'Arabic'), ('ar-dz', 'Algerian Arabic'), ('ast', 'Asturian'), ('az', 'Azerbaijani'), ('bg', 'Bulgarian'), ('be', 'Belarusian'), ('bn', 'Bengali'), ('br', 'Breton'), ('bs', 'Bosnian'), ('ca', 'Catalan'), ('cs', 'Czech'), ('cy', 'Welsh'), ('da', 'Danish'), ('de', 'German'), ('dsb', 'Lower Sorbian'), ('el', 'Greek'), ('en', 'English'), ('en-au', 'Australian English'), ('en-gb', 'British English'), ('eo', 'Esperanto'), ('es', 'Spanish'), ('es-ar', 'Argentinian Spanish'), ('es-co', 'Colombian Spanish'), ('es-mx', 'Mexican Spanish'), ('es-ni', 'Nicaraguan Spanish'), ('es-ve', 'Venezuelan Spanish'), ('et', 'Estonian'), ('eu', 'Basque'), ('fa', 'Persian'), ('fi', 'Finnish'), ('fr', 'French'), ('fy', 'Frisian'), ('ga', 'Irish'), ('gd', 'Scottish Gaelic'), ('gl', 'Galician'), ('he', 'Hebrew'), ('hi', 'Hindi'), ('hr', 'Croatian'), ('hsb', 'Upper Sorbian'), ('hu', 'Hungarian'), ('hy', 'Armenian'), ('ia', 'Interlingua'), ('id', 'Indonesian'), ('ig', 'Igbo'), ('io', 'Ido'), ('is', 'Icelandic'), ('it', 'Italian'), ('ja', 'Japanese'), ('ka', 'Georgian'), ('kab', 'Kabyle'), ('kk', 'Kazakh'), ('km', 'Khmer'), ('kn', 'Kannada'), ('ko', 'Korean'), ('ky', 'Kyrgyz'), ('lb', 'Luxembourgish'), ('lt', 'Lithuanian'), ('lv', 'Latvian'), ('mk', 'Macedonian'), ('ml', 'Malayalam'), ('mn', 'Mongolian'), ('mr', 'Marathi'), ('ms', 'Malay'), ('my', 'Burmese'), ('nb', 'Norwegian Bokmål'), ('ne', 'Nepali'), ('nl', 'Dutch'), ('nn', 'Norwegian Nynorsk'), ('os', 'Ossetic'), ('pa', 'Punjabi'), ('pl', 'Polish'), ('pt', 'Portuguese'), ('pt-br', 'Brazilian Portuguese'), ('ro', 'Romanian'), ('ru', 'Russian'), ('sk', 'Slovak'), ('sl', 'Slovenian'), ('sq', 'Albanian'), ('sr', 'Serbian'), ('sr-latn', 'Serbian Latin'), ('sv', 'Swedish'), ('sw', 'Swahili'), ('ta', 'Tamil'), ('te', 'Telugu'), ('tg', 'Tajik'), ('th', 'Thai'), ('tk', 'Turkmen'), ('tr', 'Turkish'), ('tt', 'Tatar'), ('udm', 'Udmurt'), ('uk', 'Ukrainian'), ('ur', 'Urdu'), ('uz', 'Uzbek'), ('vi', 'Vietnamese'), ('zh-hans', 'Simplified Chinese'), ('zh-hant', 'Traditional Chinese')] |
LANGUAGES_BIDI | ['he', 'ar', 'ar-dz', 'fa', 'ur'] |
LANGUAGE_CODE | 'ru' |
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 | '/accounts/profile/' |
LOGIN_URL | '/accounts/login/' |
LOGOUT_REDIRECT_URL | None |
MANAGERS | [] |
MEDIA_ROOT | '' |
MEDIA_URL | '/' |
MESSAGE_STORAGE | 'django.contrib.messages.storage.fallback.FallbackStorage' |
MIDDLEWARE | ['django.middleware.security.SecurityMiddleware', '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'] |
MIGRATION_MODULES | {} |
MONTH_DAY_FORMAT | 'F j' |
NUMBER_GROUPING | 0 |
PASSWORD_HASHERS | '********************' |
PASSWORD_RESET_TIMEOUT | '********************' |
PREPEND_WWW | False |
ROOT_URLCONF | 'thisbook.urls' |
SECRET_KEY | '********************' |
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 | 'root@localhost' |
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 | True |
SESSION_SERIALIZER | 'django.contrib.sessions.serializers.JSONSerializer' |
SETTINGS_MODULE | 'thisbook.settings' |
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 |
STAR_RATINGS_RATING_MODEL | 'star_ratings.Rating' |
STAR_RATINGS_STAR_HEIGHT | 22 |
STATICFILES_DIRS | [] |
STATICFILES_FINDERS | ['django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder'] |
STATICFILES_STORAGE | 'django.contrib.staticfiles.storage.StaticFilesStorage' |
STATIC_ROOT | '/home/dortes/kelebooks/files' |
STATIC_URL | '/files/' |
TEMPLATES | [{'APP_DIRS': True, 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [PosixPath('/home/dortes/kelebooks/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', 'books.custom_context_processor.categories_render']}}] |
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 |
WSGI_APPLICATION | 'thisbook.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.