如果在urls.py里面,我有一个依赖于模板输入的url模式,那么什么数据会被发送到url,什么数据会被发送到视图?比如说,我有一个URL模式,它取决于从模板中发送的输入,什么数据会被发送到url,什么数据会被发送到视图?
urls.py:path('post/<int:post_id>/<str:post_title>', views.view_post, name='view_post'),
blogposts.html模板。<a href="{% url 'blogs:view_post' post.id post.title%}">Read More</a>
views.py。def view_post(request, post_id, post_title):
.
如果我只想让帖子的id被发送到视图,但url看起来是一样的呢?
简单地说,添加默认参数 post_title
将要 None
. 如果你想获得 post_title
直接从 post_id
,请选择 post_title
这样做不会让你出错,因为函数已经得到了所有满足的参数值。
所以。
def view_post(request, post_id, post_title=None):
好吧,用户想要的是关于 slug field
. Slug字段是django模型中的字段类型。基本上,它是用来表示url类型的。在上面的问题中,什么是 pyknight202 想要的是url patter为 post_title
. 所以,你不能直接使用tilte作为url,因为它们包含空格,所以你必须添加 post_title
以连字符或下划线的形式显示,以便于阅读。因此,您需要在 Post
模型。
https://helloworld.com/1/this-is-example
所以,1是 post_id
由于slug不可能是唯一的,所以你不仅可以从 post_title
因此你需要 post_id
也。裁判
也许你应该用一个 slug
字段,而不是id和title的组合,你的url将看起来像 example.org/title-to-object-2/
.现在你有一个独特的slug字段,标题和id。