/ guardian / guardianhomepage /

时间:2019-02-28 19:25:53

标签: django

也请随时询问有关此项目的更多信息。我在这里做错了什么....请帮助 我提供了带有错误页面图片的模型,URL和视图图片

base.html enter image description here urls.py enter image description here

模型

enter image description here

hireapp / urls.py

enter image description here

views.py

enter image description here

错误

enter image description here

2 个答案:

答案 0 :(得分:0)

我再给一次。在您的“漂亮”图像中,错误消息为:

  

错误:/ guardian / guardianhomepage / 中的NoReverseMatch   模板中的行:

     

{% url 'guardian:guardian_profile_update' guardianprofiles.id %}

这意味着 Django尝试解析URL ,但找不到它。为什么?

通常在urls.py中使用例如:

path(‘guardian/guardianprofileupdate/<int:id>/’, guardian.GuardianProfileUpdate.as_view(), name=‘guardian_profile_update’)

它将解决。但是,您可以使用应用程序的命名空间实例定义网址格式。当您尝试获取网址时,模板中哪些未反映。应用程序的实例名称空间是hireapp,urlpatterns的名称空间是guardian

因此,如果您在模板中调用网址,则应这样调用:

{% url 'hireapp:guardian:guardian_profile_update' guardianprofiles.id %}

以此类推...否则,Django正在寻找名为 guardian 的应用程序,该应用程序不存在,因此无法解决。

命名URL hireapp:guardian:guardian_profile_update 将在名称空间guardian_profile_update中查找名为guardian的模式,该模式本身在顶级名称空间{{1 }}。

答案 1 :(得分:0)

如前所述,很难以代码的方式阅读代码,因此如果您在文本编辑器中输入代码而不是屏幕截图,这将很有帮助。基本上,问题在于没有传递任何参数,因为视图不知道您要使用哪个GuardianProfile。您可能会认为这是因为用户已登录,所以它可能会自动了解哪个GuardianProile与哪个用户相关,但是由于您指定的关系是外键,因此该用户无法使用,因此该用户可以具有多个配置文件。您可以考虑将用户配置文件与监护人/教师配置文件之间的关系更改为一对一,然后可以使用user.guardianprofile.id访问该ID。 (不确定它在驼峰环境中的工作方式)我就是这样做的,因为我认为您每个用户只需要一个Guardian或Tutor个人资料。

尝试在GuardianProfile和TutorProfile模型中更改用户字段:

user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.PROTECT,)

进行迁移,迁移,然后尝试访问ID。