【问题标题】:Create Django named URL using template variable?使用模板变量创建 Django 命名 URL?
【发布时间】:2015-02-14 22:57:22
【问题描述】:

如果需要传递模板变量,如何在 Django 中指定命名 URL 模式?我的模板包含以下 URL:

# templates/welcome.html
# Link to template that shows all members near member with this uid
<a href="{% url 'show-members-near' %}uid={{ uid }}">Show members near you</a>

我的顶级 URLconf 文件包含以下模式 到特定于应用程序的 url 文件:

# conf/urls.py
urlpatterns = patterns('',
    ...
    url(r'^members/',            include('apps.members.urls')),
    ...
)

这是我的应用程序特定的 url 文件:

# app/members/url.py
url(r'^near/(?P<uid>\d{1,})/$',
    'show_members',
    {'template': 'show_members.html'},
    name='show-members-near'),

这是我得到的错误:

NoReverseMatch at /personal_profile/welcome/
Reverse for 'show-members-near' with arguments '()' and keyword arguments '{}' not found.  1 pattern(s) tried: ['members/near/(?P<uid>\\d{1})/$']

我尝试插入这样的关键字参数,但没有成功:

<a href="{% url 'show-members-near' uid={{ uid }} %}">Show members near you</a>

在做了一些研究之后,我读到的所有内容似乎都表明应该按照我上面的方式传递关键字参数。我正在尝试做的是相当于确实工作的以下内容:

<a href="/members/near/{{ uid }}/">See who's here</a>

如何指定关键字参数?我在 Django 文档中没有看到任何解决这种情况的内容(尽管我可能错过了)。

谢谢!

【问题讨论】:

    标签: django django-templates


    【解决方案1】:

    您只需将 uid 作为关键字传入。您可以找到它记录在案的here。因此,您的 url 调用如下所示:

    <a href="{% url 'show-members-near' uid=uid %}">Show members near you</a>
    

    【讨论】:

      【解决方案2】:

      当然,这种情况得到明确支持和记录。您错过了评估模板标签内的所有内容的事实。您可以将 uid 传入:

      {% url 'show-members-near' uid=uid %}
      

      【讨论】:

        猜你喜欢
        • 2020-01-08
        • 1970-01-01
        • 1970-01-01
        • 2013-02-28
        • 2018-05-25
        • 2011-03-12
        • 2019-11-04
        • 1970-01-01
        • 2019-04-07
        相关资源
        最近更新 更多