尝试从模板

时间:2017-05-26 22:37:47

标签: django django-templates django-views python-3.4 django-urls

我收到以下错误的NoReverseMatch错误:

<a href ="{% url 'mainapp:secondaryapp:generateCSV' file_ids=fileids %}">Hello</a>

我在渲染时将视图中的字符串fileids传递给我的模板。

  

使用参数'()'和关键字参数

反转'generateCSV'      找不到

'{'file_ids':'11111111_22222222'}'。 1种模式尝试过:

     

[ '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是基于类的视图的名称。我在基于类的视图中渲染模板,并尝试使用参数fileids调用功能视图。

如果我只是按如下方式对网址进行硬编码:

  <a href = "generateCSV/{{fileids}}/">

一切都按预期工作。

非常感谢你的阅读时间和任何帮助,你可以给我!

1 个答案:

答案 0 :(得分:0)

我的一位朋友指出我的正则表达式错了;如果您在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

  

“在方括号内,大多数字符按字面解释。”