Django HttpResponseRedirect и NoReverseMatch - PullRequest
0 голосов
/ 06 июня 2018

Я пытаюсь перенаправить на новую страницу формы, поля которой автоматически заполняются данными, отправленными из функции просмотра.

Мой 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

Может кто-нибудь сказать, что не так в приведенном вышекод

1 Ответ

0 голосов
/ 06 июня 2018

Вместо следующего выражения регулярного выражения url(r"user_dashboard/NewRequest/([\{.*\}])", views.request_form, name = "NewRequest") в вашем URL:

попробуйте re имя группы:

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

Убедитесь, что в качестве аргумента по умолчанию в вашем устройстве указано имя_устройствапросмотр

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