Field 'id' expected a number but got '%D0%AD%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%BE%D0%BD%D0%BD%D1%8B%D0%B5%20%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D1%8B'.
Request Method: | GET |
---|---|
Request URL: | https://library.lib.sfedu.ru/news/%25D0%25AD%25D0%25BB%25D0%25B5%25D0%25BA%25D1%2582%25D1%2580%25D0%25BE%25D0%25BD%25D0%25BD%25D1%258B%25D0%25B5%2520%25D1%2580%25D0%25B5%25D1%2581%25D1%2583%25D1%2580%25D1%2581%25D1%258B/?page=3 |
Django Version: | 3.1.4 |
Exception Type: | ValueError |
Exception Value: | Field 'id' expected a number but got '%D0%AD%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%BE%D0%BD%D0%BD%D1%8B%D0%B5%20%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D1%8B'. |
Exception Location: | /usr/lib/python3.8/site-packages/django/db/models/fields/__init__.py, line 1776, in get_prep_value |
Python Executable: | /usr/bin/uwsgi |
Python Version: | 3.8.7 |
Python Path: | ['/var/www/localhost/django/hive/', '.', '', '/usr/lib/python38.zip', '/usr/lib/python3.8', '/usr/lib/python3.8/lib-dynload', '/usr/lib/python3.8/site-packages'] |
Server time: | Fri, 29 Mar 2024 18:56:37 +0300 |
/usr/lib/python3.8/site-packages/django/db/models/fields/__init__.py
, line 1774, in get_prep_value
return validators_
def get_prep_value(self, value):
value = super().get_prep_value(value)
if value is None:
return None
try:
return int(value)…
except (TypeError, ValueError) as e:
raise e.__class__(
"Field '%s' expected a number but got %r." % (self.name, value),
) from e
def get_internal_type(self):
Variable | Value |
---|---|
__class__ | <class 'django.db.models.fields.IntegerField'> |
self | <django.db.models.fields.AutoField: id> |
value | '%D0%AD%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%BE%D0%BD%D0%BD%D1%8B%D0%B5%20%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D1%8B' |
/usr/lib/python3.8/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 | ValueError("Field 'id' expected a number but got '%D0%AD%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%BE%D0%BD%D0%BD%D1%8B%D0%B5%20%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D1%8B'.") |
get_response | <bound method BaseHandler._get_response of <django.core.handlers.wsgi.WSGIHandler object at 0x7f5728330370>> |
request | <WSGIRequest: GET '/news/%25D0%25AD%25D0%25BB%25D0%25B5%25D0%25BA%25D1%2582%25D1%2580%25D0%25BE%25D0%25BD%25D0%25BD%25D1%258B%25D0%25B5%2520%25D1%2580%25D0%25B5%25D1%2581%25D1%2583%25D1%2580%25D1%2581%25D1%258B/?page=3'> |
/usr/lib/python3.8/site-packages/django/core/handlers/base.py
, line 179, 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 content_news at 0x7f57281c05e0> |
callback_args | () |
callback_kwargs | {'newsid': '%D0%AD%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%BE%D0%BD%D0%BD%D1%8B%D0%B5%20%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D1%8B'} |
middleware_method | <bound method CsrfViewMiddleware.process_view of <django.middleware.csrf.CsrfViewMiddleware object at 0x7f57282065b0>> |
request | <WSGIRequest: GET '/news/%25D0%25AD%25D0%25BB%25D0%25B5%25D0%25BA%25D1%2582%25D1%2580%25D0%25BE%25D0%25BD%25D0%25BD%25D1%258B%25D0%25B5%2520%25D1%2580%25D0%25B5%25D1%2581%25D1%2583%25D1%2580%25D1%2581%25D1%258B/?page=3'> |
response | None |
self | <django.core.handlers.wsgi.WSGIHandler object at 0x7f5728330370> |
wrapped_callback | <function content_news at 0x7f57281c05e0> |
/var/www/localhost/django/hive/page/views.py
, line 753, in content_news
}
return render(request, templatefile, context)
def content_news(request,newsid=None):
templatefile = "v2/full_news.html"
content = News.objects.all().get(id=newsid)…
root = Menu_Item.objects.get(parent=None)
allchildren = children(root,0)
context = {
'allchildren':allchildren,
Variable | Value |
---|---|
newsid | '%D0%AD%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%BE%D0%BD%D0%BD%D1%8B%D0%B5%20%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D1%8B' |
request | <WSGIRequest: GET '/news/%25D0%25AD%25D0%25BB%25D0%25B5%25D0%25BA%25D1%2582%25D1%2580%25D0%25BE%25D0%25BD%25D0%25BD%25D1%258B%25D0%25B5%2520%25D1%2580%25D0%25B5%25D1%2581%25D1%2583%25D1%2580%25D1%2581%25D1%258B/?page=3'> |
templatefile | 'v2/full_news.html' |
/usr/lib/python3.8/site-packages/django/db/models/query.py
, line 418, in get
return self.query.get_count(using=self.db)
def get(self, *args, **kwargs):
"""
Perform the query and return a single object matching the given
keyword arguments.
"""
clone = self._chain() if self.query.combinator else self.filter(*args, **kwargs)…
if self.query.can_filter() and not self.query.distinct_fields:
clone = clone.order_by()
limit = None
if not clone.query.select_for_update or connections[clone.db].features.supports_select_for_update_with_limit:
limit = MAX_GET_RESULTS
clone.query.set_limits(high=limit)
Variable | Value |
---|---|
args | () |
kwargs | {'id': '%D0%AD%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%BE%D0%BD%D0%BD%D1%8B%D0%B5%20%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D1%8B'} |
self | <QuerySet [<News: Обучающие вебинары Elsevier для научных сотрудников, аспирантов, преподавателей, сотрудников библиотек>, <News: Лайфхаки по результативному началу учебного года от Образовательной платформы «Юрайт»>, <News: Для Южного федерального университета открыт доступ к Образовательной платформе Юрайт>, <News: Виртуальная выставка «О, сколько нам открытий чудных…»>, <News: Дон литературный: Федор Дмитриевич Крюков>, <News: Тестовый доступ к научным рецензируемым журналам издательства «Эко-Вектор»>, <News: Южному федеральному университету предоставлен тестовый доступ к книгам издательства Wiley по общественным и гуманитарным направлениям>, <News: Дон литературный: Константин Андреевич Тренёв>, <News: Тестовый доступ к комплексу ресурсов Elsevier: журналы Cell Press, Lancet и журналы престижных научных обществ, а также базы данных Reaxys, Reaxys Medicinal Chemistry и Embase>, <News: Открыт тестовый доступ к электронным ресурсам компании JoVE>, <News: Южному федеральному университету открыт доступ к крупнейшей российской полнотекстовой базе данных — ЭБС IPR BOOKS>, <News: История библиотеки>, <News: Для Южного федерального университета открыт доступ ко всем учебникам образовательной платформы Юрайт>, <News: Коллекция лучших научно-популярных книг в свободном доступе от Национальной электронной библиотеки (НЭБ)>, <News: Дон литературный: Александр Арсентьевич Бахарев>, <News: Polpred Деловые СМИ. Бесплатный бессрочный тестовый доступ на треть контента и услуг>, <News: Запись и презентация вебинара «Использование научных ресурсов Wiley в учебном процессе и исследовательской деятельности»>, <News: Тестовый доступ к электронно-библиотечной системе «Айбукс»>, <News: Электронная выставка: «Пастораль в литературе»>, <News: Тестовый доступ к ведущим зарубежным информационным ресурсам>, '...(remaining elements truncated)...']> |
/usr/lib/python3.8/site-packages/django/db/models/query.py
, line 942, in filter
def filter(self, *args, **kwargs):
"""
Return a new QuerySet instance with the args ANDed to the existing
set.
"""
self._not_support_combined_queries('filter')
return self._filter_or_exclude(False, *args, **kwargs)…
def exclude(self, *args, **kwargs):
"""
Return a new QuerySet instance with NOT (args) ANDed to the existing
set.
"""
Variable | Value |
---|---|
args | () |
kwargs | {'id': '%D0%AD%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%BE%D0%BD%D0%BD%D1%8B%D0%B5%20%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D1%8B'} |
self | <QuerySet [<News: Обучающие вебинары Elsevier для научных сотрудников, аспирантов, преподавателей, сотрудников библиотек>, <News: Лайфхаки по результативному началу учебного года от Образовательной платформы «Юрайт»>, <News: Для Южного федерального университета открыт доступ к Образовательной платформе Юрайт>, <News: Виртуальная выставка «О, сколько нам открытий чудных…»>, <News: Дон литературный: Федор Дмитриевич Крюков>, <News: Тестовый доступ к научным рецензируемым журналам издательства «Эко-Вектор»>, <News: Южному федеральному университету предоставлен тестовый доступ к книгам издательства Wiley по общественным и гуманитарным направлениям>, <News: Дон литературный: Константин Андреевич Тренёв>, <News: Тестовый доступ к комплексу ресурсов Elsevier: журналы Cell Press, Lancet и журналы престижных научных обществ, а также базы данных Reaxys, Reaxys Medicinal Chemistry и Embase>, <News: Открыт тестовый доступ к электронным ресурсам компании JoVE>, <News: Южному федеральному университету открыт доступ к крупнейшей российской полнотекстовой базе данных — ЭБС IPR BOOKS>, <News: История библиотеки>, <News: Для Южного федерального университета открыт доступ ко всем учебникам образовательной платформы Юрайт>, <News: Коллекция лучших научно-популярных книг в свободном доступе от Национальной электронной библиотеки (НЭБ)>, <News: Дон литературный: Александр Арсентьевич Бахарев>, <News: Polpred Деловые СМИ. Бесплатный бессрочный тестовый доступ на треть контента и услуг>, <News: Запись и презентация вебинара «Использование научных ресурсов Wiley в учебном процессе и исследовательской деятельности»>, <News: Тестовый доступ к электронно-библиотечной системе «Айбукс»>, <News: Электронная выставка: «Пастораль в литературе»>, <News: Тестовый доступ к ведущим зарубежным информационным ресурсам>, '...(remaining elements truncated)...']> |
/usr/lib/python3.8/site-packages/django/db/models/query.py
, line 962, in _filter_or_exclude
"Cannot filter a query once a slice has been taken."
clone = self._chain()
if self._defer_next_filter:
self._defer_next_filter = False
clone._deferred_filter = negate, args, kwargs
else:
clone._filter_or_exclude_inplace(negate, *args, **kwargs)…
return clone
def _filter_or_exclude_inplace(self, negate, *args, **kwargs):
if negate:
self._query.add_q(~Q(*args, **kwargs))
else:
Variable | Value |
---|---|
args | () |
clone | <QuerySet [<News: Обучающие вебинары Elsevier для научных сотрудников, аспирантов, преподавателей, сотрудников библиотек>, <News: Лайфхаки по результативному началу учебного года от Образовательной платформы «Юрайт»>, <News: Для Южного федерального университета открыт доступ к Образовательной платформе Юрайт>, <News: Виртуальная выставка «О, сколько нам открытий чудных…»>, <News: Дон литературный: Федор Дмитриевич Крюков>, <News: Тестовый доступ к научным рецензируемым журналам издательства «Эко-Вектор»>, <News: Южному федеральному университету предоставлен тестовый доступ к книгам издательства Wiley по общественным и гуманитарным направлениям>, <News: Дон литературный: Константин Андреевич Тренёв>, <News: Тестовый доступ к комплексу ресурсов Elsevier: журналы Cell Press, Lancet и журналы престижных научных обществ, а также базы данных Reaxys, Reaxys Medicinal Chemistry и Embase>, <News: Открыт тестовый доступ к электронным ресурсам компании JoVE>, <News: Южному федеральному университету открыт доступ к крупнейшей российской полнотекстовой базе данных — ЭБС IPR BOOKS>, <News: История библиотеки>, <News: Для Южного федерального университета открыт доступ ко всем учебникам образовательной платформы Юрайт>, <News: Коллекция лучших научно-популярных книг в свободном доступе от Национальной электронной библиотеки (НЭБ)>, <News: Дон литературный: Александр Арсентьевич Бахарев>, <News: Polpred Деловые СМИ. Бесплатный бессрочный тестовый доступ на треть контента и услуг>, <News: Запись и презентация вебинара «Использование научных ресурсов Wiley в учебном процессе и исследовательской деятельности»>, <News: Тестовый доступ к электронно-библиотечной системе «Айбукс»>, <News: Электронная выставка: «Пастораль в литературе»>, <News: Тестовый доступ к ведущим зарубежным информационным ресурсам>, '...(remaining elements truncated)...']> |
kwargs | {'id': '%D0%AD%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%BE%D0%BD%D0%BD%D1%8B%D0%B5%20%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D1%8B'} |
negate | False |
self | <QuerySet [<News: Обучающие вебинары Elsevier для научных сотрудников, аспирантов, преподавателей, сотрудников библиотек>, <News: Лайфхаки по результативному началу учебного года от Образовательной платформы «Юрайт»>, <News: Для Южного федерального университета открыт доступ к Образовательной платформе Юрайт>, <News: Виртуальная выставка «О, сколько нам открытий чудных…»>, <News: Дон литературный: Федор Дмитриевич Крюков>, <News: Тестовый доступ к научным рецензируемым журналам издательства «Эко-Вектор»>, <News: Южному федеральному университету предоставлен тестовый доступ к книгам издательства Wiley по общественным и гуманитарным направлениям>, <News: Дон литературный: Константин Андреевич Тренёв>, <News: Тестовый доступ к комплексу ресурсов Elsevier: журналы Cell Press, Lancet и журналы престижных научных обществ, а также базы данных Reaxys, Reaxys Medicinal Chemistry и Embase>, <News: Открыт тестовый доступ к электронным ресурсам компании JoVE>, <News: Южному федеральному университету открыт доступ к крупнейшей российской полнотекстовой базе данных — ЭБС IPR BOOKS>, <News: История библиотеки>, <News: Для Южного федерального университета открыт доступ ко всем учебникам образовательной платформы Юрайт>, <News: Коллекция лучших научно-популярных книг в свободном доступе от Национальной электронной библиотеки (НЭБ)>, <News: Дон литературный: Александр Арсентьевич Бахарев>, <News: Polpred Деловые СМИ. Бесплатный бессрочный тестовый доступ на треть контента и услуг>, <News: Запись и презентация вебинара «Использование научных ресурсов Wiley в учебном процессе и исследовательской деятельности»>, <News: Тестовый доступ к электронно-библиотечной системе «Айбукс»>, <News: Электронная выставка: «Пастораль в литературе»>, <News: Тестовый доступ к ведущим зарубежным информационным ресурсам>, '...(remaining elements truncated)...']> |
/usr/lib/python3.8/site-packages/django/db/models/query.py
, line 969, in _filter_or_exclude_inplace
clone._filter_or_exclude_inplace(negate, *args, **kwargs)
return clone
def _filter_or_exclude_inplace(self, negate, *args, **kwargs):
if negate:
self._query.add_q(~Q(*args, **kwargs))
else:
self._query.add_q(Q(*args, **kwargs))…
def complex_filter(self, filter_obj):
"""
Return a new QuerySet instance with filter_obj added to the filters.
filter_obj can be a Q object or a dictionary of keyword lookup
Variable | Value |
---|---|
args | () |
kwargs | {'id': '%D0%AD%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%BE%D0%BD%D0%BD%D1%8B%D0%B5%20%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D1%8B'} |
negate | False |
self | <QuerySet [<News: Обучающие вебинары Elsevier для научных сотрудников, аспирантов, преподавателей, сотрудников библиотек>, <News: Лайфхаки по результативному началу учебного года от Образовательной платформы «Юрайт»>, <News: Для Южного федерального университета открыт доступ к Образовательной платформе Юрайт>, <News: Виртуальная выставка «О, сколько нам открытий чудных…»>, <News: Дон литературный: Федор Дмитриевич Крюков>, <News: Тестовый доступ к научным рецензируемым журналам издательства «Эко-Вектор»>, <News: Южному федеральному университету предоставлен тестовый доступ к книгам издательства Wiley по общественным и гуманитарным направлениям>, <News: Дон литературный: Константин Андреевич Тренёв>, <News: Тестовый доступ к комплексу ресурсов Elsevier: журналы Cell Press, Lancet и журналы престижных научных обществ, а также базы данных Reaxys, Reaxys Medicinal Chemistry и Embase>, <News: Открыт тестовый доступ к электронным ресурсам компании JoVE>, <News: Южному федеральному университету открыт доступ к крупнейшей российской полнотекстовой базе данных — ЭБС IPR BOOKS>, <News: История библиотеки>, <News: Для Южного федерального университета открыт доступ ко всем учебникам образовательной платформы Юрайт>, <News: Коллекция лучших научно-популярных книг в свободном доступе от Национальной электронной библиотеки (НЭБ)>, <News: Дон литературный: Александр Арсентьевич Бахарев>, <News: Polpred Деловые СМИ. Бесплатный бессрочный тестовый доступ на треть контента и услуг>, <News: Запись и презентация вебинара «Использование научных ресурсов Wiley в учебном процессе и исследовательской деятельности»>, <News: Тестовый доступ к электронно-библиотечной системе «Айбукс»>, <News: Электронная выставка: «Пастораль в литературе»>, <News: Тестовый доступ к ведущим зарубежным информационным ресурсам>, '...(remaining elements truncated)...']> |
/usr/lib/python3.8/site-packages/django/db/models/sql/query.py
, line 1358, in add_q
# For join promotion this case is doing an AND for the added q_object
# and existing conditions. So, any existing inner join forces the join
# type to remain inner. Existing outer joins can however be demoted.
# (Consider case where rel_a is LOUTER and rel_a__col=1 is added - if
# rel_a doesn't produce any rows, then the whole condition must fail.
# So, demotion is OK.
existing_inner = {a for a in self.alias_map if self.alias_map[a].join_type == INNER}
clause, _ = self._add_q(q_object, self.used_aliases)…
if clause:
self.where.add(clause, AND)
self.demote_joins(existing_inner)
def build_where(self, filter_expr):
return self.build_filter(filter_expr, allow_joins=False)[0]
Variable | Value |
---|---|
existing_inner | set() |
q_object | <Q: (AND: ('id', '%D0%AD%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%BE%D0%BD%D0%BD%D1%8B%D0%B5%20%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D1%8B'))> |
self | <django.db.models.sql.query.Query object at 0x7f572786c910> |
/usr/lib/python3.8/site-packages/django/db/models/sql/query.py
, line 1377, in _add_q
connector = q_object.connector
current_negated = current_negated ^ q_object.negated
branch_negated = branch_negated or q_object.negated
target_clause = self.where_class(connector=connector,
negated=q_object.negated)
joinpromoter = JoinPromoter(q_object.connector, len(q_object.children), current_negated)
for child in q_object.children:
child_clause, needed_inner = self.build_filter(…
child, can_reuse=used_aliases, branch_negated=branch_negated,
current_negated=current_negated, allow_joins=allow_joins,
split_subq=split_subq, check_filterable=check_filterable,
)
joinpromoter.add_votes(needed_inner)
if child_clause:
Variable | Value |
---|---|
allow_joins | True |
branch_negated | False |
check_filterable | True |
child | ('id', '%D0%AD%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%BE%D0%BD%D0%BD%D1%8B%D0%B5%20%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D1%8B') |
connector | 'AND' |
current_negated | False |
joinpromoter | <django.db.models.sql.query.JoinPromoter object at 0x7f572786c340> |
q_object | <Q: (AND: ('id', '%D0%AD%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%BE%D0%BD%D0%BD%D1%8B%D0%B5%20%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D1%8B'))> |
self | <django.db.models.sql.query.Query object at 0x7f572786c910> |
split_subq | True |
target_clause | <WhereNode: (AND: )> |
used_aliases | {'page_news'} |
/usr/lib/python3.8/site-packages/django/db/models/sql/query.py
, line 1319, in build_filter
if len(targets) == 1:
col = self._get_col(targets[0], join_info.final_field, alias)
else:
col = MultiColSource(alias, targets, join_info.targets, join_info.final_field)
else:
col = self._get_col(targets[0], join_info.final_field, alias)
condition = self.build_lookup(lookups, col, value)…
lookup_type = condition.lookup_name
clause.add(condition, AND)
require_outer = lookup_type == 'isnull' and condition.rhs is True and not current_negated
if current_negated and (lookup_type != 'isnull' or condition.rhs is False) and condition.rhs is not None:
require_outer = True
Variable | Value |
---|---|
alias | 'page_news' |
allow_joins | True |
allow_many | True |
arg | 'id' |
branch_negated | False |
can_reuse | {'page_news'} |
check_filterable | True |
clause | <WhereNode: (AND: )> |
col | Col(page_news, page.News.id) |
current_negated | False |
filter_expr | ('id', '%D0%AD%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%BE%D0%BD%D0%BD%D1%8B%D0%B5%20%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D1%8B') |
join_info | JoinInfo(final_field=<django.db.models.fields.AutoField: id>, targets=(<django.db.models.fields.AutoField: id>,), opts=<Options for News>, joins=['page_news'], path=[], transform_function=<function Query.setup_joins.<locals>.final_transformer at 0x7f572748c5e0>) |
join_list | ['page_news'] |
lookups | [] |
opts | <Options for News> |
parts | ['id'] |
pre_joins | {} |
reffed_expression | False |
reuse_with_filtered_relation | False |
self | <django.db.models.sql.query.Query object at 0x7f572786c910> |
split_subq | True |
targets | (<django.db.models.fields.AutoField: id>,) |
used_joins | {'page_news'} |
value | '%D0%AD%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%BE%D0%BD%D0%BD%D1%8B%D0%B5%20%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D1%8B' |
/usr/lib/python3.8/site-packages/django/db/models/sql/query.py
, line 1165, in build_lookup
# and do an Exact lookup against it.
lhs = self.try_transform(lhs, lookup_name)
lookup_name = 'exact'
lookup_class = lhs.get_lookup(lookup_name)
if not lookup_class:
return
lookup = lookup_class(lhs, rhs)…
# Interpret '__exact=None' as the sql 'is NULL'; otherwise, reject all
# uses of None as a query value unless the lookup supports it.
if lookup.rhs is None and not lookup.can_use_none_as_rhs:
if lookup_name not in ('exact', 'iexact'):
raise ValueError("Cannot use None as a query value")
return lhs.get_lookup('isnull')(lhs, True)
Variable | Value |
---|---|
lhs | Col(page_news, page.News.id) |
lookup_class | <class 'django.db.models.lookups.Exact'> |
lookup_name | 'exact' |
lookups | [] |
rhs | '%D0%AD%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%BE%D0%BD%D0%BD%D1%8B%D0%B5%20%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D1%8B' |
self | <django.db.models.sql.query.Query object at 0x7f572786c910> |
transforms | [] |
/usr/lib/python3.8/site-packages/django/db/models/lookups.py
, line 24, in __init__
class Lookup:
lookup_name = None
prepare_rhs = True
can_use_none_as_rhs = False
def __init__(self, lhs, rhs):
self.lhs, self.rhs = lhs, rhs
self.rhs = self.get_prep_lookup()…
if hasattr(self.lhs, 'get_bilateral_transforms'):
bilateral_transforms = self.lhs.get_bilateral_transforms()
else:
bilateral_transforms = []
if bilateral_transforms:
# Warn the user as soon as possible if they are trying to apply
Variable | Value |
---|---|
lhs | Col(page_news, page.News.id) |
rhs | '%D0%AD%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%BE%D0%BD%D0%BD%D1%8B%D0%B5%20%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D1%8B' |
self | <django.db.models.lookups.Exact object at 0x7f572786ca00> |
/usr/lib/python3.8/site-packages/django/db/models/lookups.py
, line 76, in get_prep_lookup
else:
self.lhs, self.rhs = new_exprs
def get_prep_lookup(self):
if hasattr(self.rhs, 'resolve_expression'):
return self.rhs
if self.prepare_rhs and hasattr(self.lhs.output_field, 'get_prep_value'):
return self.lhs.output_field.get_prep_value(self.rhs)…
return self.rhs
def get_db_prep_lookup(self, value, connection):
return ('%s', [value])
def process_lhs(self, compiler, connection, lhs=None):
Variable | Value |
---|---|
self | <django.db.models.lookups.Exact object at 0x7f572786ca00> |
/usr/lib/python3.8/site-packages/django/db/models/fields/__init__.py
, line 1776, in get_prep_value
def get_prep_value(self, value):
value = super().get_prep_value(value)
if value is None:
return None
try:
return int(value)
except (TypeError, ValueError) as e:
raise e.__class__(…
"Field '%s' expected a number but got %r." % (self.name, value),
) from e
def get_internal_type(self):
return "IntegerField"
Variable | Value |
---|---|
__class__ | <class 'django.db.models.fields.IntegerField'> |
self | <django.db.models.fields.AutoField: id> |
value | '%D0%AD%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%BE%D0%BD%D0%BD%D1%8B%D0%B5%20%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D1%8B' |
AnonymousUser
Variable | Value |
---|---|
page | '3' |
No POST data
No FILES data
No cookie data
Variable | Value |
---|---|
CONTENT_LENGTH | '' |
CONTENT_TYPE | '' |
DOCUMENT_ROOT | '/var/www/localhost/django/hive' |
HTTPS | 'on' |
HTTP_ACCEPT | '*/*' |
HTTP_HOST | 'library.lib.sfedu.ru' |
HTTP_REFERER | 'https://library.sfedu.ru/news/%25D0%25AD%25D0%25BB%25D0%25B5%25D0%25BA%25D1%2582%25D1%2580%25D0%25BE%25D0%25BD%25D0%25BD%25D1%258B%25D0%25B5%2520%25D1%2580%25D0%25B5%25D1%2581%25D1%2583%25D1%2580%25D1%2581%25D1%258B/?page=3' |
HTTP_USER_AGENT | 'claudebot' |
PATH_INFO | '/news/%D0%AD%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%BE%D0%BD%D0%BD%D1%8B%D0%B5%20%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D1%8B/' |
QUERY_STRING | 'page=3' |
REMOTE_ADDR | '44.222.129.73' |
REMOTE_PORT | '60392' |
REQUEST_METHOD | 'GET' |
REQUEST_SCHEME | 'https' |
REQUEST_URI | '/news/%25D0%25AD%25D0%25BB%25D0%25B5%25D0%25BA%25D1%2582%25D1%2580%25D0%25BE%25D0%25BD%25D0%25BD%25D1%258B%25D0%25B5%2520%25D1%2580%25D0%25B5%25D1%2581%25D1%2583%25D1%2580%25D1%2581%25D1%258B/?page=3' |
SCRIPT_NAME | '' |
SERVER_NAME | 'library.lib.sfedu.ru' |
SERVER_PORT | '443' |
SERVER_PROTOCOL | 'HTTP/1.1' |
uwsgi.node | b'znb-site' |
uwsgi.version | b'2.0.19.1' |
wsgi.errors | <_io.TextIOWrapper name=2 mode='w' encoding='UTF-8'> |
wsgi.file_wrapper | <built-in function uwsgi_sendfile> |
wsgi.input | <uwsgi._Input object at 0x7f57273973f0> |
wsgi.multiprocess | True |
wsgi.multithread | False |
wsgi.run_once | False |
wsgi.url_scheme | 'https' |
wsgi.version | (1, 0) |
hive.settings
Setting | Value |
---|---|
ABSOLUTE_URL_OVERRIDES | {} |
ADMINS | () |
ALLOWED_HOSTS | ['library.lib.sfedu.ru'] |
APPEND_SLASH | True |
AUTHENTICATION_BACKENDS | ['django.contrib.auth.backends.ModelBackend'] |
AUTH_PASSWORD_VALIDATORS | '********************' |
AUTH_USER_MODEL | 'auth.User' |
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.postgresql_psycopg2', 'HOST': '', 'NAME': 'hive', 'OPTIONS': {}, 'PASSWORD': '********************', 'PORT': '', 'TEST': {'CHARSET': None, 'COLLATION': None, 'MIGRATE': True, 'MIRROR': None, 'NAME': None}, 'TIME_ZONE': None, 'USER': 'hive'}} |
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 | 'webmaster@localhost' |
DEFAULT_HASHING_ALGORITHM | 'sha256' |
DEFAULT_INDEX_TABLESPACE | '' |
DEFAULT_TABLESPACE | '' |
DISALLOWED_USER_AGENTS | [] |
ELASTICSEARCH_DSL | {'default': {'hosts': 'localhost:9200'}} |
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' |
IGNORABLE_404_URLS | [] |
INSTALLED_APPS | ['django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.admin', 'django.contrib.admindocs', 'tinymce', 'django_elasticsearch_dsl', 'page', 'extblock'] |
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'), ('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-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 | {'disable_existing_loggers': False, 'filters': {'require_debug_false': {'()': 'django.utils.log.RequireDebugFalse'}}, 'handlers': {'block_edit_handler': {'class': 'logging.FileHandler', 'filename': '/var/www/localhost/django/hive/logs/block_edit.log', 'level': 'DEBUG'}}, 'loggers': {'block_edit_logger': {'handlers': ['block_edit_handler'], 'level': 'DEBUG', 'propagate': True}}, 'version': 1} |
LOGGING_CONFIG | 'logging.config.dictConfig' |
LOGIN_REDIRECT_URL | '/accounts/profile/' |
LOGIN_URL | '/login/' |
LOGOUT_REDIRECT_URL | None |
MANAGERS | () |
MEDIA_ROOT | '/var/www/localhost/django/hive/media/' |
MEDIA_URL | '//library.lib.sfedu.ru/media/' |
MESSAGE_STORAGE | 'django.contrib.messages.storage.fallback.FallbackStorage' |
MIDDLEWARE | ('django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware') |
MIGRATION_MODULES | {} |
MONTH_DAY_FORMAT | 'F j' |
NUMBER_GROUPING | 0 |
PASSWORD_HASHERS | '********************' |
PASSWORD_RESET_TIMEOUT | '********************' |
PASSWORD_RESET_TIMEOUT_DAYS | '********************' |
PREPEND_WWW | False |
ROOT_URLCONF | 'hive.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 | 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 | False |
SESSION_SERIALIZER | 'django.contrib.sessions.serializers.JSONSerializer' |
SETTINGS_MODULE | 'hive.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 |
STATICFILES_DIRS | () |
STATICFILES_FINDERS | ('django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder') |
STATICFILES_STORAGE | 'django.contrib.staticfiles.storage.StaticFilesStorage' |
STATIC_ROOT | '/var/www/localhost/django/hive/static/' |
STATIC_URL | '//library.lib.sfedu.ru/static/' |
TEMPLATES | [{'APP_DIRS': True, 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': ['/var/www/localhost/django/hive/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']}}] |
TEMPLATE_CONTEXT_PROCESSORS | ('django.contrib.auth.context_processors.auth', 'django.core.context_processors.media', 'django.core.context_processors.debug', 'django.core.context_processors.i18n', 'django.core.context_processors.static', 'django.core.context_processors.request', 'django.contrib.messages.context_processors.messages') |
TEMPLATE_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 | 'Europe/Moscow' |
TINYMCE_DEFAULT_CONFIG | {'external_filemanager_path': '/media/filemanager/', 'external_plugins': {'filemanager': '/media/filemanager/plugin.min.js'}, 'filemanager_title': 'Responsive Filemanager', 'height': 300, 'language': 'ru', 'plugins': 'advlist autolink link image lists charmap print preview hr anchor ' 'pagebreak spellchecker searchreplace wordcount visualblocks ' 'visualchars code fullscreen insertdatetime media nonbreaking save ' 'table contextmenu directionality emoticons template paste ' 'textcolor responsivefilemanager', 'resize': 'both', 'theme': 'modern', 'width': 800} |
TINYMCE_JS_ROOT | '//library.lib.sfedu.ru/media//js/tinymce' |
TINYMCE_JS_URL | '//library.lib.sfedu.ru/media/js/tinymce/tinymce.min.js' |
USE_I18N | True |
USE_L10N | True |
USE_THOUSAND_SEPARATOR | False |
USE_TZ | False |
USE_X_FORWARDED_HOST | False |
USE_X_FORWARDED_PORT | False |
WSGI_APPLICATION | 'hive.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.