尝试从模板访问视图时 NoReverseMatch
NoReverseMatch when trying to access view from template
我收到以下 NoReverseMatch 错误:
<a href ="{% url 'mainapp:secondaryapp:generateCSV' file_ids=fileids %}">Hello</a>
渲染时,我将视图中的字符串 fileids
传递到模板。
Reverse for 'generateCSV' with arguments '()' and keyword arguments
'{'file_ids': '11111111_22222222'}' not found. 1 pattern(s) tried:
['mainapp/secondaryapp/generateCSV/(?P[\d{8,20}]+\_*)/$']
我的mainapp/urls.py
是:
from django.conf.urls import url, include
from mainapp import views
urlpatterns = [
...
url(r'^secondaryapp/', include('secondaryapp.urls', namespace="secondaryapp")),
]
和secondaryapp/urls.py
是:
from django.conf.urls import url
from search import views
urlpatterns = [
url(r'^$', views.secondaryapp.as_view(), name='secondaryapp'),
url(r'^generateCSV/(?P<file_ids>[\d{8,20}]+\_*)/$', views.generateCSV, name='generateCSV'),
]
generateCSV
是功能视图,secondaryapp
是基于class 的视图的名称。我在基于 class 的视图中呈现模板,并尝试使用参数 fileids
.
调用功能视图
如果我简单地硬编码 url 如下:
<a href = "generateCSV/{{fileids}}/">
一切正常。
非常感谢您抽出宝贵的时间阅读并提供任何帮助!
我的一个朋友指出我的正则表达式是错误的;如果您在 secondaryapp/urls.py
中使用以下内容
url(r'^generateCSV/(?P<fileids>(?:\d{8,20}_)*\d{8,20}?)/$', views.generateCSV, name='generateCSV'),
与 secondaryapp/templates/secondaryapp/template.html
中的以下内容
<a href = "{% url 'mainapp:secondaryapp:generateCSV' fileids %}">
然后事情按预期工作。
显然,当我尝试使用方括号对特殊字符进行分组时,是方括号害了我;据他说,他们将通常的运算符变成了常规字符,并可能使我也接受逗号和大括号。
根据this:
"Within square brackets, most characters are interpreted literally."
我收到以下 NoReverseMatch 错误:
<a href ="{% url 'mainapp:secondaryapp:generateCSV' file_ids=fileids %}">Hello</a>
渲染时,我将视图中的字符串 fileids
传递到模板。
Reverse for 'generateCSV' with arguments '()' and keyword arguments
'{'file_ids': '11111111_22222222'}' not found. 1 pattern(s) tried:
['mainapp/secondaryapp/generateCSV/(?P[\d{8,20}]+\_*)/$']
我的mainapp/urls.py
是:
from django.conf.urls import url, include
from mainapp import views
urlpatterns = [
...
url(r'^secondaryapp/', include('secondaryapp.urls', namespace="secondaryapp")),
]
和secondaryapp/urls.py
是:
from django.conf.urls import url
from search import views
urlpatterns = [
url(r'^$', views.secondaryapp.as_view(), name='secondaryapp'),
url(r'^generateCSV/(?P<file_ids>[\d{8,20}]+\_*)/$', views.generateCSV, name='generateCSV'),
]
generateCSV
是功能视图,secondaryapp
是基于class 的视图的名称。我在基于 class 的视图中呈现模板,并尝试使用参数 fileids
.
如果我简单地硬编码 url 如下:
<a href = "generateCSV/{{fileids}}/">
一切正常。
非常感谢您抽出宝贵的时间阅读并提供任何帮助!
我的一个朋友指出我的正则表达式是错误的;如果您在 secondaryapp/urls.py
url(r'^generateCSV/(?P<fileids>(?:\d{8,20}_)*\d{8,20}?)/$', views.generateCSV, name='generateCSV'),
与 secondaryapp/templates/secondaryapp/template.html
<a href = "{% url 'mainapp:secondaryapp:generateCSV' fileids %}">
然后事情按预期工作。
显然,当我尝试使用方括号对特殊字符进行分组时,是方括号害了我;据他说,他们将通常的运算符变成了常规字符,并可能使我也接受逗号和大括号。
根据this:
"Within square brackets, most characters are interpreted literally."