Python 不带pk的django url
我已经尝试了太长时间,现在让我的URL与我的简单模型和视图一起工作。有些事情我绝对不明白 我希望创建一个类似以下内容的url:Python 不带pk的django url,python,django,url,Python,Django,Url,我已经尝试了太长时间,现在让我的URL与我的简单模型和视图一起工作。有些事情我绝对不明白 我希望创建一个类似以下内容的url: ../department/team, 这里我不使用部门对象的PK,而是使用名称 我的模型看起来像: class Department(models.Model): name = models.CharField(max_length=50, blank=True, null=True) def __str__(self): return
../department/team
,
这里我不使用部门对象的PK,而是使用名称
我的模型看起来像:
class Department(models.Model):
name = models.CharField(max_length=50, blank=True, null=True)
def __str__(self):
return 'Department: ' + self.name
class Hold(models.Model):
name = models.CharField(max_length=50, blank=True, null=True)
department = models.ForeignKey(Department, on_delete=models.CASCADE)
我的视图看起来像(更新的):
我的url如下所示:已更新
urlpatterns = [
path('', views.IndexView.as_view(), name='index'),
path('<name>', views.DepartmentView.as_view(), name='depdetail')
]
urlpatterns=[
路径(“”,views.IndexView.as_view(),name='index'),
路径(“”,views.DepartmentView.as_view(),name='depdetail')
]
最后是我的html:
<h1> Hello there {{ object.name }} student</h1> </br>
<b> Choose your team:<b> </br>
你好{{object.name}学生
选择您的团队:
然而,我不断得到页面未找到
或必须是slug或pk
。。
我希望有人能帮我,这样我就可以安心了
已更新
现在可以使用了:)谢谢你的回复。默认情况下,Django会在你使用
详细视图时查找pk
或slug
字段。您必须重写方法以更改此行为:
get\u object()
在视图的参数中查找pk\u url\u kwarg
参数;如果找到此参数,此方法将使用该值执行基于主键的查找。如果未找到此参数,它将查找slug\u url\u kwarg
参数,并使用slug\u字段执行slug查找
尽管如此,您的方法还有其他问题。出于其他原因,最好使用slug而不是名称。例如,name
不能保证是唯一的,而且它可能包含不安全的URL字符。有关如何使用slug字段的详细讨论,请参阅。默认情况下,Django将在使用详细视图时查找pk
或slug
字段。您必须重写方法以更改此行为:
get\u object()
在视图的参数中查找pk\u url\u kwarg
参数;如果找到此参数,此方法将使用该值执行基于主键的查找。如果未找到此参数,它将查找slug\u url\u kwarg
参数,并使用slug\u字段执行slug查找
尽管如此,您的方法还有其他问题。出于其他原因,最好使用slug而不是名称。例如,name
不能保证是唯一的,而且它可能包含不安全的URL字符。有关如何使用slug字段的详细讨论,请参见
<h1> Hello there {{ object.name }} student</h1> </br>
<b> Choose your team:<b> </br>