我有以下设置:
/landing_pages
views.py
urls.py
在urls.py
中,当我尝试访问/competition
时,我有以下内容:
from django.conf.urls.defaults import *
from django.conf import settings
from django.views.generic.simple import direct_to_template
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
url(r'^competition$', 'landing_pages.views.page', {'page_name': 'competition'}, name="competition_landing"),
)
我的views.py
有类似的内容:
def page(request, page_name):
return HttpResponse('ok')
然后在模板中我试图这样做:
{% load url from future %}
<a href="{% url 'landing_pages.views.page' page_name='competition'%}">
Competition
</a>
我显然做不到:
渲染时捕获NoReverseMatch:反向'landing_pages.views.page',参数'()'和关键字参数'{'page_name':u'competition'}'找不到。
我做错了什么?
答案 0 :(得分:10)
你在评论中向DrTyrsa询问为什么你不能使用args或kwargs。想一想。 {% url %}
标记输出 - 顾名思义 - 是用户可以点击的实际URL。但是你没有为参数的URL模式提供空间。他们会去哪儿? URL会是什么样的?它会如何运作?
如果要允许用户为视图指定参数,则必须提供一个URL模式,其中包含用于这些参数的空间。
答案 1 :(得分:0)
{% url [project_name].landing_pages.views.page page_name='competition' %}
或更好
{% url competition_landing 'competition' %}