【问题标题】:Django HttpResponseRedirect and NoReverseMatchDjango HttpResponseRedirect 和 NoReverseMatch
【发布时间】:2018-11-15 20:20:13
【问题描述】:

我正在尝试重定向到一个新的表单页面,该页面的字段会自动填充从视图函数发送的数据。

我的 urls.py 是:

url(r"user_dashboard/NewRequest/([\{.*\}])", views.request_form, name = "NewRequest")

发送数据的视图函数位于:

url(r"user_dashboard/NReq", views.request_request, name="NReq"),

调用上面的url。

我的视图函数的返回语句是:

return HttpResponseRedirect(reverse(request_form, kwargs={"device_type":devicetype}))

但是,我收到以下错误:

NoReverseMatch at /user_dashboard/NReq
Reverse for 'inventory_management_app.views.request_form' with keyword arguments '{u'device_type': u'Laptop'}' not found. 1 pattern(s) tried: ['user_dashboard/NewRequest/([\\{.*\\}])']
Request Method: POST
Request URL:    http://127.0.0.1:8000/user_dashboard/NReq
Django Version: 1.11.13
Exception Type: NoReverseMatch
Exception Value:    
Reverse for 'inventory_management_app.views.request_form' with keyword arguments '{u'device_type': u'Laptop'}' not found. 1 pattern(s) tried: ['user_dashboard/NewRequest/([\\{.*\\}])']
Exception Location: C:\Anaconda2\lib\site-packages\django\urls\resolvers.py in _reverse_with_prefix, line 497
Python Executable:  C:\Anaconda2\python.exe
Python Version: 2.7.14
Python Path:    
['E:\\inventory management\\inventory_management_service',
 'C:\\Anaconda2\\python27.zip',
 'C:\\Anaconda2\\DLLs',
 'C:\\Anaconda2\\lib',
 'C:\\Anaconda2\\lib\\plat-win',
 'C:\\Anaconda2\\lib\\lib-tk',
 'C:\\Anaconda2',
 'C:\\Users\\Jaimik Jain\\AppData\\Roaming\\Python\\Python27\\site-packages',
 'C:\\Anaconda2\\lib\\site-packages',
 'C:\\Anaconda2\\lib\\site-packages\\win32',
 'C:\\Anaconda2\\lib\\site-packages\\win32\\lib',
 'C:\\Anaconda2\\lib\\site-packages\\Pythonwin',
 'C:\\Anaconda2\\lib\\site-packages\\pywinpty-0.5-py2.7-win-amd64.egg']
Server time:    Wed, 6 Jun 2018 07:48:44 +0000

谁能告诉我上面的代码有什么问题?

【问题讨论】:

  • 您当前将 request_form 作为第一个参数传递给 reverse ,无论出于何种原因。在docs.djangoproject.com/en/2.0/ref/urlresolvers/#reverse 阅读reverse 的文档。您需要传递 urlpattern 的名称或您尝试匹配的视图名称来反转。
  • request_form 的值是多少?
  • 看起来它是来自异常@Lemayzeur 的“inventory_management_app.views.request_form”。

标签: django django-forms django-urls


【解决方案1】:

而不是 URL 中的以下正则表达式 url(r"user_dashboard/NewRequest/([\{.*\}])", views.request_form, name = "NewRequest")

尝试使用re 组名:

url(r"user_dashboard/NewRequest/(?P<device_name>\w.+)", views.request_form, name = "NewRequest")

确保您的视图中有 device_name 作为默认参数

def request_form(request,device_name=''):
    '''

【讨论】:

    猜你喜欢
    • 2011-11-26
    • 1970-01-01
    • 2015-07-03
    • 2011-08-14
    • 2010-10-28
    • 2012-01-06
    • 1970-01-01
    • 2014-02-10
    相关资源
    最近更新 更多