反向Django URL上的NoReverseMatch错误

时间:2014-11-21 18:50:19

标签: django

我已经在django 1.7中宣布了一个关注的网址:

  

url(r'^ page(/ \ w {2} / | /)$',MyView.as_view(),name ='my_name'),

在我的模板中,我想从其名称中反转网址。我试过了:

<form  method="post" action="{% url 'my_namespace:my_name' variable %}">

<form  method="post" action="{% url 'my_namespace:my_name' %}">

但没有任何作用,它抛出异常:

使用参数'(u'test',)'和关键字参数'{}'找不到'my_name'。尝试了1种模式:['page(\ / \ w {2} \ / | \ /)$']

请给我一些建议。谢谢。

1 个答案:

答案 0 :(得分:4)

正则表达式似乎不匹配参数&#39; test&#39;。

如果我们看一下正则表达式(/\w{2}/|/), 它似乎捕获了两个被“&OR”分隔的组。 (|)operator。

第一组是/\w{2}/。这只会匹配&#39; /&#39;然后是\ w只有2次,然后是&#39; /&#39;。

第二组仅匹配&#39; /&#39;。

&#39;测试&#39;不会与这些案例中的任何一个匹配,因此会引发异常。

我相信我们希望在这里捕获的正确正则表达式是

(\w+)

正确的网址结构如下所示,

url(r'^page/(\w+)/$', MyView.as_view(), name='my_name')
url(r'^page/$', MyView.as_view(), name='my_name')

考虑到参数&#39; test&#39;因为正则表达式(\w+)表示匹配此组中的任何字符[a-zA-Z0-9_]一次或多次,并且每个字符都在&#39;测试&#39;属于这一类。