#python #django #django-rest-framework #django-views
#python #django #django-rest-framework #django-просмотры
Вопрос:
Я создаю приложение для блога. И я использую версию Django 3.8.1. Я застрял на проблеме
Traceback (most recent call last):
File "C:appsolibsite-packagesdjangodbmodelsfields__init__.py", line 1774, in get_prep_value
return int(value)
The above exception (invalid literal for int() with base 10: 'favicon.ico') was the direct cause of the following exception:
File "C:appsolibsite-packagesdjangocorehandlersexception.py", line 47, in inner
response = get_response(request)
File "C:appsolibsite-packagesdjangocorehandlersbase.py", line 179, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:appsolibsite-packagesdjangocontribauthdecorators.py", line 21, in _wrapped_view
return view_func(request, *args, **kwargs)
File "C:appmainsviews.py", line 261, in detail_view
data = get_object_or_404(Post,pk=id)
File "C:appsolibsite-packagesdjangoshortcuts.py", line 76, in get_object_or_404
return queryset.get(*args, **kwargs)
File "C:appsolibsite-packagesdjangodbmodelsquery.py", line 418, in get
clone = self._chain() if self.query.combinator else self.filter(*args, **kwargs)
File "C:appsolibsite-packagesdjangodbmodelsquery.py", line 942, in filter
return self._filter_or_exclude(False, *args, **kwargs)
File "C:appsolibsite-packagesdjangodbmodelsquery.py", line 962, in _filter_or_exclude
clone._filter_or_exclude_inplace(negate, *args, **kwargs)
File "C:appsolibsite-packagesdjangodbmodelsquery.py", line 969, in _filter_or_exclude_inplace
self._query.add_q(Q(*args, **kwargs))
File "C:appsolibsite-packagesdjangodbmodelssqlquery.py", line 1358, in add_q
clause, _ = self._add_q(q_object, self.used_aliases)
File "C:appsolibsite-packagesdjangodbmodelssqlquery.py", line 1377, in _add_q
child_clause, needed_inner = self.build_filter(
File "C:appsolibsite-packagesdjangodbmodelssqlquery.py", line 1319, in build_filter
condition = self.build_lookup(lookups, col, value)
File "C:appsolibsite-packagesdjangodbmodelssqlquery.py", line 1165, in build_lookup
lookup = lookup_class(lhs, rhs)
File "C:appsolibsite-packagesdjangodbmodelslookups.py", line 24, in __init__
self.rhs = self.get_prep_lookup()
File "C:appsolibsite-packagesdjangodbmodelslookups.py", line 76, in get_prep_lookup
return self.lhs.output_field.get_prep_value(self.rhs)
File "C:appsolibsite-packagesdjangodbmodelsfields__init__.py", line 1776, in get_prep_value
raise e.__class__(
Exception Type: ValueError at /favicon.ico
Exception Value: Field 'id' expected a number but got 'favicon.ico'.
views.py
def detail_view(request,id):
data = get_object_or_404(Post,pk=id)
comments = data.comments.order_by('-created_at')
new_comment = None
if request.method == 'POST':
comment_form = CommentForm(data=request.POST)
if comment_form.is_valid():
comment_form.instance.post_by = data
comment_form.instance.commented_by = request.user
comment_form.instance.active = True
new_comment = comment_form.save()
return redirect('detail_view',id=id)
else:
comment_form = CommentForm()
context ={'data':data,'comments':comments,'new_comment':new_comment,'comment_form':comment_form}
return render(request, 'show_more.html', context )
Проблема
Все работает нормально. Каждая страница браузера открывается нормально. НО когда я запускаю сервер и открываю несколько страниц в браузере, тогда сервер терминалов должен показывать, Server Activity
НО он отображается Field 'id' expected a number but got 'favicon.ico'.
в каждом действии (на каждой странице, которую я нажимаю). Пожалуйста, скажите, что не так с этим терминальным сервером.
Буду признателен за любую помощь.
Заранее благодарю вас.
Комментарии:
1. Проблема заключается в не очень специфичных URL-адресах (а также в статических настройках, которые обслуживают статические файлы в корне).
Ответ №1:
def detail_view(запрос, идентификатор): id = int(идентификатор)
data = get_object_or_404(Post,pk=id)
comments = data.comments.order_by('-created_at')
new_comment = None
if request.method == 'POST':
comment_form = CommentForm(data=request.POST)
if comment_form.is_valid():
comment_form.instance.post_by = data
comment_form.instance.commented_by = request.user
comment_form.instance.active = True
new_comment = comment_form.save()
return redirect('detail_view',id=id)
else:
comment_form = CommentForm()
context ={'data':data,'comments':comments,'new_comment':new_comment,'comment_form':comment_form}
return render(request, 'show_more.html', context )
Комментарии:
1. id = int (id) преобразовать str в int