使用模板变量创建Django命名URL?

时间:2014-12-16 15:19:44

标签: django django-templates

如果需要传递模板变量,如何在Django中指定命名的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文档中我没有看到任何解决这种情况的事情(尽管我可能已经错过了它)。

谢谢!

2 个答案:

答案 0 :(得分:1)

您只需将uid作为关键字传递。你可以找到它记录here。因此,您的网址调用如下所示:

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

答案 1 :(得分:0)

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

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