django 删除模板中的硬编码 URL

Nik*_*ore 2 python django url django-urls

我知道在模板文件中我可以包含此代码,它将返回链接列表

{% for q in all %}
    <ul>
        <li><a href={% url 'detail' q.id %}>{{ q.question_text }}</a></li>
    </ul>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

'detail'现在 django 将在我的应用程序目录的文件中搜索该名称,并自动为该参数urls.py提供 的值。q.id但是,如果我的 url 包含多个变量怎么办?所以这里我只能给出一个论点,即q.id。但如果我想给出多个论点怎么办?希望我清楚

Wil*_*sem 5

您可以将 视为urls.pyURL 如何映射到视图函数(以及基于类的视图)的声明。url 可以有任意数量的参数。

例如,如果我们有以下 URL:

    url(r'^detail/(?P<year>(\d+))/(?P<name>(\w+))/$', views.detail),
Run Code Online (Sandbox Code Playgroud)

我们可以将此 url 视为某种虚拟函数,它采用以下参数:

def some_url(year, name):
    # ...
    pass
Run Code Online (Sandbox Code Playgroud)

所以我们可以使用未命名的参数构造这个 URL :

{% url 'detail' 1981 q.name %}
Run Code Online (Sandbox Code Playgroud)

或使用命名参数:

{% url 'detail' name=q.name year=1981 %}
Run Code Online (Sandbox Code Playgroud)