我是Django的新手,我正在尝试创建一个学校数据库webapp作为培训练习。(使用Django 2.1)
我建立了两个模范学校和学生。我的主页是数据库中所有学校的列表视图。每一所学校都是显示学校详细情况和所有学校学生名单的主要参考资料。每个学校的学生也是一个锚参考学生详细资料页。
在我的urls页面上,错误出现在我的路径上。
path('<int:pk>/<int:cpk>/',views.StudentDetailView.as_view(),name='student_details'),
这一行获取url以输出我当前所在的学校的主键和我选择的学生的主键。
当我单击学生的名字时,它会与学校的主键相同,因为url是(basic_app/1/1/)。如何使它从url (ckp)中的第二个数字中提取并显示该主键数据?
例如,学校的pk为1,有10名学生。在学校的详细信息页上列出了所有的学生。当我单击学生3时,url看起来像basic_app/ 1 /3/ (基于上面的路径代码),但它只显示了学生1的详细信息。我需要编辑什么才能找到合适的学生(views.py、models.py、urls.py、html文件)?
发布于 2018-08-02 11:16:41
如果我理解得对,您的问题基本上是,当您访问basic_app/1/3/
时,您希望看到主键为3的学生的详细信息,但是您看到的是一个具有主键1的学生。
如果是这样的话,这是因为在您的视图中,您使用的是URL字段pk
,而应该使用cpk
。尝试更改您的URL模式如下所示:
path('<int:school_pk>/<int:pk>/',views.StudentDetailView.as_view(),name='student_details'),
(如果这不起作用,请为StudentDetailView
发布代码。)
通常,我建议使用更多的描述性URL字段,例如school_pk
、student_pk
、.这样你才能避免制造混乱。
发布于 2020-02-25 08:50:32
用这个代替path("<int:pk>/",views.SchoolDetailView.as_view(),name='detail')
发布于 2022-01-11 17:57:13
解决这一问题有三种方法:
在urls.py中
from django.urls import path
urlpatterns = [
path('<int:pk>/',SchoolDetailView.as_view(), name='detail')
]
(或):在urls.py
from django.urls import re_path
urlpatterns = [
re_path(r'^(?P<pk>[-\w]+)/$', SchoolDetailView.as_view(), name='detail')
]
(或):
在urls.py中:
from django.conf.urls import url
urlpatterns = [
url(r'^(?P<pk>[-\w]+)/$', SchoolDetailView.as_view(), name='detail')
]
https://stackoverflow.com/questions/51660571
复制相似问题