为什么要将 {%url ....%} 与 slug 一起使用?

Why to use {%url ....%} with slug?

我是 Django 的新手,正在制作一个简单的博客来提高我的技能。我无法准确理解将 {% url XXX %} 与 slug.More 一起使用的目的;

<a href ="{% url 'theview' post.slug%}">

据我所知,上面的 url 标记会将 link 映射到名为 'theview' 的视图函数。 url.py 上还有一个正则表达式过滤器,用于捕获点击的 link 并将其与适当的视图函数匹配。那为什么我们使用 {%url%} 虽然有一个过滤器可以注意到 link 是否是 slug?创造 link 还不够吗;

<a href="{{post.slug}}">

我们使用 url 标签生成具有给定名称和参数以及关键字参数的 uri。如果你不想使用那么你需要手动编写每个url。这是一种不好的做法。

url(r'^blog/post/(?P<slug>[\w-]+)/$', name='post_detail')

如果你有像上面那样的 url 那么(最好的方法)

# post.slug = 'learn-python'
<a href="{% url 'post_detail' post.slug %}" > {{ post }}</a>
# is equivalent to
# /blog/post/learn-python/

否则我们需要这样写

<a href="/blog/post/{{post.slug}}/" > {{ post }}</a>

<a href="{{post.slug}}"> 将不起作用。