Django访问/profile路径报'function' object has no attribute 'objects'错误如何解决
Django AttributeError问题修复方案
根因定位
错误提示'function' object has no attribute 'objects'说明你调用.objects的目标对象实际是函数,并非Django模型类,问题出在代码的命名冲突和大小写错误:
- 未导入models中定义的Profile模型类
- 视图函数名和Profile模型类重名,导致命名冲突
- 模型调用、用户反向引用的大小写混用错误
具体修复步骤
- 在views.py顶部导入Profile模型:
from .models import Profile
- 修改视图函数名,避免和模型类重名,同时符合Python函数命名规范:
# 修改前 @login_required def Profile(request): # 修改后 @login_required def profile(request):
注意:修改后要同步检查urls.py中对应的视图函数引用是否匹配
- 修正第20行的模型调用代码,使用导入的Profile模型类调用方法:
# 修改前 profile.objects.get_or_create(user=request.user) # 修改后 Profile.objects.get_or_create(user=request.user)
- 修正else分支中反向引用的大小写错误,Django OneToOne字段默认反向引用为小写模型名:
# 修改前 p_form = ProfileUpdateForm(instance=request.user.Profile) # 修改后 p_form = ProfileUpdateForm(instance=request.user.profile)
完成以上修改后即可正常访问/profile路径。
内容的提问来源于stack exchange,提问作者Legible_Jibberish
相关产品推荐
相关产品推荐

