Django NoReverseMatch

Kit*_*nde 6 django url django-templates

我有以下设置:

/landing_pages
    views.py
urls.py
Run Code Online (Sandbox Code Playgroud)

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"),
)
Run Code Online (Sandbox Code Playgroud)

views.py有这样的事情:

def page(request, page_name):
    return HttpResponse('ok')
Run Code Online (Sandbox Code Playgroud)

然后在模板中我试图这样做:

{% load url from future %}
<a href="{% url 'landing_pages.views.page' page_name='competition'%}">
    Competition
</a>
Run Code Online (Sandbox Code Playgroud)

其中我显然做不到:

渲染时捕获NoReverseMatch:反向'landing_pages.views.page',参数'()'和关键字参数'{'page_name':u'competition'}'未找到.

我究竟做错了什么?

Dan*_*man 10

你在评论中询问DrTyrsa为什么你不能使用args或kwargs.想一想.该{% url %}标签输出-顾名思义-用户可以点击一个实际的URL.但是你没有为参数的URL模式提供空间.他们会去哪儿?URL会是什么样的?它会如何工作?

如果要允许用户为视图指定参数,则必须提供一个URL模式,其中包含用于这些参数的空间.