Django访问所有页面时报'TypeError: 'HttpResponseForbidden' object is not callable'如何解决
问题排查结果
直接触发报错的核心原因是 url 配置中视图函数引用错误,同时存在一个潜在的模型方法定义问题,修复方案如下:
1. 修复urls.py的视图引用错误
你的Users/views.py中定义的个人页视图函数名为小写的profile,但urls.py中引用时写为了大写开头的Profile,此时你实际引用到的是views.py中从models导入的Profile模型类,而非你写的视图函数,Django执行过程中异常流程返回的HttpResponseForbidden实例被当作可调用对象执行,触发报错。
修改urls.py中profile对应路径的配置:
# 错误写法 path('profile/', user_views.Profile, name="Profile_Page"), # 替换为正确写法 path('profile/', user_views.profile, name="Profile_Page"),
2. 修复Profile模型的save方法定义问题
你重写的模型save方法没有接收Django默认传入的参数,后续执行模型保存操作时大概率会触发额外异常,修改为兼容参数的写法:
def save(self, *args, **kwargs): super().save(*args, **kwargs) img = Image.open(self.image.path) if img.height > 300 and img.width > 300: output_size=(300,300) img.thumbnail(output_size) img.save(self.image.path)
验证操作
两处修改完成后重启Django服务,重新测试登录、访问个人页、注册等操作即可恢复正常。
内容的提问来源于stack exchange,提问作者The Elif
相关产品推荐
相关产品推荐

