首页 > 解决方案 > 字段 'id' 需要一个数字,但得到了 'favicon.ico'

问题描述

我正在构建一个博客应用程序。而且我正在使用 Django 3.8.1 版本。我被困在一个问题上

Traceback (most recent call last):
  File "C:\app\so\lib\site-packages\django\db\models\fields\__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:\app\so\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
response = get_response(request)
  File "C:\app\so\lib\site-packages\django\core\handlers\base.py", line 179, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:\app\so\lib\site-packages\django\contrib\auth\decorators.py", line 21, in _wrapped_view
return view_func(request, *args, **kwargs)
  File "C:\app\mains\views.py", line 261, in detail_view
data = get_object_or_404(Post,pk=id)
  File "C:\app\so\lib\site-packages\django\shortcuts.py", line 76, in get_object_or_404
return queryset.get(*args, **kwargs)
  File "C:\app\so\lib\site-packages\django\db\models\query.py", line 418, in get
clone = self._chain() if self.query.combinator else self.filter(*args, **kwargs)
  File "C:\app\so\lib\site-packages\django\db\models\query.py", line 942, in filter
return self._filter_or_exclude(False, *args, **kwargs)
  File "C:\app\so\lib\site-packages\django\db\models\query.py", line 962, in _filter_or_exclude
clone._filter_or_exclude_inplace(negate, *args, **kwargs)
  File "C:\app\so\lib\site-packages\django\db\models\query.py", line 969, in _filter_or_exclude_inplace
self._query.add_q(Q(*args, **kwargs))
  File "C:\app\so\lib\site-packages\django\db\models\sql\query.py", line 1358, in add_q
clause, _ = self._add_q(q_object, self.used_aliases)
  File "C:\app\so\lib\site-packages\django\db\models\sql\query.py", line 1377, in _add_q
child_clause, needed_inner = self.build_filter(
  File "C:\app\so\lib\site-packages\django\db\models\sql\query.py", line 1319, in build_filter
condition = self.build_lookup(lookups, col, value)
  File "C:\app\so\lib\site-packages\django\db\models\sql\query.py", line 1165, in build_lookup
lookup = lookup_class(lhs, rhs)
  File "C:\app\so\lib\site-packages\django\db\models\lookups.py", line 24, in __init__
self.rhs = self.get_prep_lookup()
  File "C:\app\so\lib\site-packages\django\db\models\lookups.py", line 76, in get_prep_lookup
return self.lhs.output_field.get_prep_value(self.rhs)
  File "C:\app\so\lib\site-packages\django\db\models\fields\__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'.

视图.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'.请告诉这个终端服务器出了什么问题。

任何帮助将不胜感激。

先感谢您。

标签: pythondjangodjango-rest-frameworkdjango-views

解决方案


def detail_view(request,id): id = int(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 )

推荐阅读