Поле ‘id’ ожидало число, но получило ‘favicon.ico’

#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