Обрабатывать необязательный параметр url в модульном тесте Django
Я создал динамический URL с необязательным параметром
Например, если мой URL-адрес как www.example.com/getTest/1/ Теперь это 1
в URL не является обязательным, для обработки этого в представлениях, которые я использовал
def function(request, id=None):
pass
Таким образом, если в URL нет идентификатора, функция все еще работает для меня. Но я сталкиваюсь с проблемой при тестировании этого в единичных случаях. если я использую URL как url = reverse('yescourse:academypage_url', args=[None])
это дает мне ошибку
NoReverseMatch: Reverse for 'academypage_url' with arguments '('new', None)' and keyword arguments '{}' not found.
Поэтому, пожалуйста, скажите мне, как я могу обрабатывать эти необязательные ссылки в тестовых случаях или в обратном порядке.
Редактировать:
url(r'^getTest/(?P<action>\w+)/(?P<id>\d*)$', 'app.views.create_edit_academypage', name='academypage_url'),
1 ответ
Вы сделали функцию просмотра id
необязательный параметр, но он не является обязательным в шаблоне URL. Сначала вам нужно переписать ваш шаблон как:
r'^getTest/(?P<action>\w+)/(?P<id>\d+)?$'
=> весь под-шаблон 'id' является необязательным, но если это не так, он должен соответствовать одному или нескольким числам.
После этого вы можете поменять URL, не передавая args
ни kwargs
аргументы:
url = reverse('yescourse:academypage_url')
или передав пустой список
url = reverse('yescourse:academypage_url', args=[])
или мимоходом None
url = reverse('yescourse:academypage_url', args=None)
но не передавая список, содержащий None
,