Django url模式数据

问题描述 投票:0回答:1

如果在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看起来是一样的呢?

django url django-urls
1个回答
2
投票

简单地说,添加默认参数 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 也。裁判


1
投票

也许你应该用一个 slug 字段,而不是id和title的组合,你的url将看起来像 example.org/title-to-object-2/.现在你有一个独特的slug字段,标题和id。

© www.soinside.com 2019 - 2024. All rights reserved.