2014-11-21 73 views
0

我宣布一个网址就像在Django 1.7以下:错误NoReverseMatch

URL(R '^页面(/ \ 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' %}"> 

但没有什么工作,它扔例外:

反向的 'MY_NAME' 与参数 '(u'test')”和关键字参数 '{}' 未找到。 1个模式尝试:['page(\/\ w {2} \/| \ /)$']

请帮助给我一些建议。谢谢。

回答

4

正则表达式对于参数'test'的匹配显示不正确。

如果我们看看正则表达式(/\w{2}/|/), 它似乎捕获两个由'OR'(|)运算符分隔的组。第一组是/\w{2}/。这只会匹配'/',后跟\ w只有2次,后跟'/'。

第二组只匹配'/'。

'test'与这些情况中的任何一个都不匹配,因此引发异常。

我相信正确的正则表达式,我们期待在这里拍摄会,

(\w+) 

正确的URL结构是这样的,

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

这将匹配给定参数“测试”因为正则表达式(\w+)表示匹配该组中的任何字符[a-zA-Z0-9_]一次或多次,并且'测试'中的每个字符都属于该类别。

+0

我试着传递两个字符变量'ab'而不是'测试',但它仍然不起作用。但是,如果我将这个网址按照您的建议拆分为2,则效果很好。这可能两个只使用一个url声明? – 2014-11-22 04:08:33

+0

是的,URL中的参数将消除对URL的调用。 – 2014-11-22 17:27:51