在redi上传递参数时出现Django NoReverseMatch错误

2024-10-01 09:23:53 发布

您现在位置:Python中文网/ 问答频道 /正文

Hi-im正在尝试从一个视图函数重定向到另一个视图函数,并将列表列表作为参数传递。在

网址.py

    urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^checkFiles/', views.checkFiles, name='checkoutFiles'),
    url(r'^$', views.home, name='home'),
    url(r'^upload/', views.upload, name='upload'),
    url(r'^login', views.loginview, name='loginview'),
    url(r'^logout/', views.logoutview, name='logoutview'),
    url(r'^confirm_files/', views.upload, name='confirm_file'),
    url(r'^upload/', views.del_files, name='del_files'),

]

视图.py

用于重定向自视图.上载到视图.checkoutFiles我用这个命令

^{pr2}$

。。。在

def checkFiles(request, ACCEPTED_FILES):
  print ACCEPTED_FILES
  return render(request, 'confirm_files.html', {
      'ACCEPTED_FILES': ACCEPTED_FILES
  })

我收到了这个错误信息

NoReverseMatch: Reverse for 'checkoutFiles' with keyword arguments '{'ACCEPTED_FILES': [[u't2_r0Oqwl7.txt', '0.98 KB', u'text/plain']]}' not found. 1 pattern(s) tried: ['checkFiles/']

django版本:1.11.2


Tags: 函数namepy视图url列表files重定向
2条回答

您应该在项目中添加命名空间网址.py文件和下面的代码
例子: 项目名称/网址.py在

url(r'^appname/', include('appname.urls', namespace='namespace')),

在视图.py在

^{pr2}$

当您调用reverse时,Django将遵循您在网址.py. 在这里,您没有在正则表达式中为checkoutFiles指定任何参数。例如:

url(r'^articles/([0-9]{4})/$', views.year_archive, name='year-archive'),

在本例中,您可以调用:

^{pr2}$

https://docs.djangoproject.com/en/1.11/topics/http/urls/#example

在您的代码中,您必须指定您将在该URL中接收的参数。在

url(r'^checkFiles/(?P<extension>[\w]+)/$', views.checkFiles, name='checkoutFiles'),

虽然通过URL进行这种验证不是一个好主意。在

编辑2

如果要在URL中包含内容,可以使用GET参数:

无论何时重定向,都可以执行以下操作:

return redirect(reverse('checkoutFiles') + '?files={}'.format(ACCEPTED_FILES))

在重定向到的视图中,可以使用

request.GET.get('files', '')

https://docs.djangoproject.com/en/1.11/ref/request-response/#django.http.HttpRequest.GET

相关问题 更多 >