我认为这可能是非常简单的事情,但我不知道为什么这些urls不匹配我的生活。
我的模板代码如下所示:
<form action="{% url 'view_record' "facility_report" %}" method="post">
{% csrf_token %}
{{ form }}
<input type="submit" value="View Report" name='view' label="Submit"> </form>
然后,url应该与我的url conf中的这一行相匹配:
url(r'^view_record/((?P<report_type>.+)/)?$', views.view_record, name='view_record'),
我在这里错过了什么?他们根本不匹配,大多数其他的问题是从五年前的引擎似乎更挑剔的格式化。
Exception Type: NoReverseMatch at /view_record/
Exception Value: Reverse for 'view_record' with arguments '('facility_report',)' and keyword arguments '{}' not found. 1 pattern(s) tried: ['view_record/((?P<report_type>(.*))/)?$']
发布于 2015-08-19 07:49:42
((?P<report_type>.+)/)?
中的外部组是一个捕获组。Django的url反转不能处理嵌套的捕获组,因此它只能捕获外部组作为可能的参数。因为第一个参数不是以/
结尾,所以模式不匹配,并且抛出了一个NoReverseMatch
。
您可以将外部组更改为非捕获组,Django将选择内部组作为捕获组。这样,参数就不必包含/
,因为只有内部组被替换,外部组被按原样使用。
若要创建非捕获组,请使用?:
启动组。
url(r'^view_record/(?:(?P<report_type>.+)/)?$', views.view_record, name='view_record'),
发布于 2015-08-19 07:10:54
你可以这样做:
<form action="{%url 'view_record' 'facility_report'%}" method="post">
在你的urls.py
里
url(r'^view_record/(?P<report_type>(.*))/$', views.view_record, name='view_record')
这应该将表单发送到正确的url。
https://stackoverflow.com/questions/32099183
复制