如何在Django中将可选参数传递给url

时间:2014-05-20 08:04:08

标签: django django-urls

我有一个带有一个可选参数的网址格式:

# 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 %}

并得到了类似的错误。

1 个答案:

答案 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,并在第二种情况下由网址定义。