URL模板标记中的多个参数

时间:2016-01-12 18:31:42

标签: django

我正在尝试为我的网址添加一些参数,如果我只有一个参数,那么一切都很好。但是,如果我尝试使用2,它会将它们转换为dict并抛出错误。以下是我尝试过的一些没有成功的事情,任何帮助都会很棒。我正在运行Django 1.8.4

            {% autoescape off %}
            <a href={% url "products.views.display_product_list" page=previous keyword=current_keyword %}>
                Previous</a>
            Current Page
            <a href={% url "products.views.display_product_list" page=next keyword=current_keyword %}>
                Next</a>
            {% endautoescape %}

            <a href={% url "products.views.display_product_list" page=previous,keyword=current_keyword %}>
                Previous</a>
            Current Page
            <a href={% url "products.views.display_product_list" page=next,keyword=current_keyword %}>
                Next</a>

第一个在/ results / page-0 /

给出NoReverseMatch的错误

第二个是/ results / page-0 /的TemplateSyntaxError 无法解析剩余部分

我的网址如下:

r'^(?:page-(?P<page>[0-9]*)/)(?:keyword-(?P<keyword>[0-9A-Z]*)/)?$'

网页追溯:

Reverse for 'products.views.display_product_list' with arguments '()' and keyword arguments '{'page': 0, 'keyword': 'dress'}' not found. 1 pattern(s) tried: ['results/(?:page-(?P<page>[0-9]*)/)(?:keyword-(?P<keyword>[0-9A-Z]*)/)?$']

Request Method: GET
Request URL:    http://127.0.0.1:8888/results/page-0/?csrfmiddlewaretoken=CxlgETtyGPQpKa9pG276SZ0zzPQky9JA&keywords=dress
Django Version: 1.8.4
Exception Type: NoReverseMatch
Exception Value:    
Reverse for 'products.views.display_product_list' with arguments '()' and keyword arguments '{'page': 0, 'keyword': 'dress'}' not found. 1 pattern(s) tried: ['results/(?:page-(?P<page>[0-9]*)/)(?:keyword-(?P<keyword>[0-9A-Z]*)/)?$']
Exception Location: C:\Users\William\AppData\Roaming\Python\Python34\site-packages\django\core\urlresolvers.py in _reverse_with_prefix, line 496

1 个答案:

答案 0 :(得分:0)

(?P<keyword>[0-9A-Z]*)

正则表达式的这一部分仅匹配数字和大写字母,但您将小写字词传递给{% url %}标记。您需要相应地更改模式:

(?P<keyword>[0-9a-zA-Z]*)