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

Django中出现'WeeklyPlan对象无get属性'的AttributeError如何解决?

Django视图报错:AttributeError: 'WeeklyPlan' object has no attribute 'get'

问题代码

Models.py

class WeeklyPlan(models.Model):
    title = models.CharField(max_length=255, verbose_name="Weekly Plan Name")
    monday = models.ForeignKey(Meal, on_delete=models.PROTECT, related_name="monday_plans")
    tuesday = models.ForeignKey(Meal, on_delete=models.PROTECT, related_name="tuesday_plans")
    wednesday = models.ForeignKey(Meal, on_delete=models.PROTECT, related_name="wednesday_plans")
    thursday = models.ForeignKey(Meal, on_delete=models.PROTECT, related_name="thursday_plans")
    friday = models.ForeignKey(Meal, on_delete=models.PROTECT, related_name="friday_plans")

    def __str__(self):
        return self.title

Views.py

from django.shortcuts import render
from .models import WeeklyPlan, Extra, Meal

def homepage(request):
    plans = WeeklyPlan.objects.all()
    print(plans)
    context = {"plans": plans}
    return render(request, template_name='food/index.html', context=context)

HTML模板(food/index.html)

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>

</body>
</html>

报错信息

Internal Server Error: /
Traceback (most recent call last):
  File "C:\Users\Rayyan Admin\Documents\GitHub\food_delivery\venv\lib\site-packages\django\core\handlers\exception.py", line 56, in inner
    response = get_response(request)
  File "C:\Users\Rayyan Admin\Documents\GitHub\food_delivery\venv\lib\site-packages\django\utils\deprecation.py", line 138, in __call__
    response = self.process_response(request, response)
  File "C:\Users\Rayyan Admin\Documents\GitHub\food_delivery\venv\lib\site-packages\django\middleware\clickjacking.py", line 27, in process_response
    if response.get("X-Frame-Options") is not None:
AttributeError: 'WeeklyPlan' object has no attribute 'get'

解决方法

错误核心原因是路由配置错误:项目或应用的urls.py中大概率将WeeklyPlan模型类误作为视图函数绑定到了根路径,导致Django返回了模型对象而非合法的HttpResponse对象。

修正urls.py配置

打开对应urls.py文件,确保路由指向views.py中的homepage函数,而非WeeklyPlan模型。正确配置示例:

from django.urls import path
from .views import homepage

urlpatterns = [
    path('', homepage, name='home'),
]

模板扩展(可选)

如果需要在页面中展示计划内容,可修改HTML模板的<body>部分添加循环渲染代码:

<body>
    <h1>Weekly Plans</h1>
    <ul>
        {% for plan in plans %}
            <li>{{ plan.title }}</li>
        {% endfor %}
    </ul>
</body>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 23:42:30