Django 2.1-为主键创建正确的路径URL

时间:2018-08-02 19:05:41

标签: python django django-models django-views django-urls

我是Django的新手,我正在尝试创建学校数据库webapp作为培训练习。(使用Django 2.1)

我设置了两个模型School和Student。我的主页是数据库中所有学校的列表视图。这些学校中的每一个都是锚参考,以显示学校详细信息和所有学校学生的列表。每个学校学生也是“学生详细信息”页面的主要参考。

我的网址页面上的路径上出现了错误。

path('<int:pk>/<int:cpk>/',views.StudentDetailView.as_view(),name='student_details'),

此行获取的URL用于输出我当前所在学校的主键和所选学生的主键。

当我单击学生姓名时,它将转到与学校具有相同主键的学生,因为URL为(basic_app / 1/1 /)。如何获取它以从网址(ckp)中的第二个数字中提取并显示该主键数据?

例如,pk为1的学校有10个学生。在学校详细信息页面上,它列出了所有学生。当我单击学生3时,该URL看起来像basic_app / 1/3 /(基于上面的路径代码),但只会显示学生1的详细信息。选择合适的学生(views.py,models.py,urls.py,html文件)?

2 个答案:

答案 0 :(得分:1)

改为使用此 path("<int:pk>/",views.SchoolDetailView.as_view(),name='detail')

答案 1 :(得分:0)

如果我的理解正确,那么您的问题基本上是,当您访问basic_app/1/3/时,您想查看主键为3的学生的详细信息,但是却看到了主键为1的学生。

如果是这种情况,那是因为在您看来,您使用的是URL字段pk,而您应该使用cpk。尝试更改您的URL模式,如下所示:

path('<int:school_pk>/<int:pk>/',views.StudentDetailView.as_view(),name='student_details'),

(如果这样做不起作用,请发布StudentDetailView的代码。)

通常,我建议使用更具描述性的网址字段,例如school_pkstudent_pk,...,以便避免造成混乱。