You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django点击Add按钮触发AttributeError: 'int'对象无get属性问题

错误原因及解决方案

核心错误原因

你的视图函数返回了整数类型,不符合Django视图的要求:
在views.py中,Book.objects.filter(pk=query).update(moved=True)会返回受影响的记录行数(整数),你直接把这个整数作为响应返回。但Django要求视图必须返回HttpResponse或其子类对象(比如render、redirect的返回值)。当中间件(这里是点击劫持防护中间件)尝试调用响应对象的get()方法处理响应头时,整数没有该属性,就抛出了AttributeError: 'int' object has no attribute 'get'。

分步解决方案

1. 修复视图的返回值

处理完图书状态更新后,不要返回update()的结果,改用重定向或重新渲染页面。推荐用重定向,避免用户刷新页面重复提交表单:
修改views.py的对应代码:

from django.shortcuts import redirect

class BookList(generic.View):
    model = Book
    def get(self, request, *args, **kwargs):
        books = Book.objects.all()

        if request.GET.get('Add') == 'Add':
            query = request.GET.get('hidden-book')
            Book.objects.filter(pk=query).update(moved=True)
            # 重定向到当前页面,清除URL中的提交参数
            return redirect(request.path)

        context = {'books': books}
        return render(request, 'main.html', context)

2. 修复模板的语法错误

main.html中隐藏输入框的value属性缺少闭合双引号,会导致表单提交的参数异常:

<form method="GET" action="">
  <input type="hidden" name="hidden-book" value="{{ book.id }}"/>
  <input type="submit" name="Add" value="Add"/>
</form>

3. 可选优化:改用POST请求处理写操作

按照HTTP规范,修改数据的操作应该用POST请求,避免浏览器预加载、书签触发等误操作:

  • 模板修改:
<form method="POST" action="">
  {% csrf_token %}
  <input type="hidden" name="hidden-book" value="{{ book.id }}"/>
  <input type="submit" name="Add" value="Add"/>
</form>
  • 视图新增POST方法处理逻辑:
class BookList(generic.View):
    model = Book
    def get(self, request, *args, **kwargs):
        books = Book.objects.all()
        context = {'books': books}
        return render(request, 'main.html', context)
    
    def post(self, request, *args, **kwargs):
        if request.POST.get('Add') == 'Add':
            query = request.POST.get('hidden-book')
            Book.objects.filter(pk=query).update(moved=True)
            return redirect(request.path)
        return redirect(request.path)

内容的提问来源于stack exchange,提问作者gabekutner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 11:05:15