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
相关产品推荐
相关产品推荐

