我有一个带有一个可选参数的网址格式:
# urls.py :
url(r'^(page/(?P<page>\w+))?$', MyIndexView.as_view(), name='index'),
分页和其他一切都很有效,直到我在模板中的特定页面创建了一个url:
# templates/mysite.html
{% url 'index' 54 %}
然后我收到错误:
Reverse for 'index' with arguments '(54,)' and keyword arguments '{}' not found. 1 pattern(s) tried: [u'(page/(?P<page>\\w+))?$']
没有参数,它可以工作:
{% url 'index' %}
我也尝试过:
{% url 'index' page=54 %}
并得到了类似的错误。
答案 0 :(得分:4)
您可以创建两个网址格式,一个默认参数为1,另一个网址与page
匹配:
# urls.py :
url(r'^page$', MyIndexView.as_view(), {'page': 1}, name='index'),
url(r'^page/(?P<page>\w+)$', MyIndexView.as_view(), name='index'),
the url
function的第三个参数是kwargs
,因此kwargs['page']
在第一种情况下将为1,并在第二种情况下由网址定义。