我创建了一个带有可选参数
的动态网址例如,如果我的网址是 www.example.com/getTest/1 /
现在,url中的这个1
是可选的,要在我使用的非像
def function(request, id=None):
pass
因此,如果URL中没有id,那么该功能仍适用于我。
但是在单元情况下测试时我遇到了问题。
如果我使用url作为url = reverse('yescourse:academypage_url', args=[None])
它会给我错误
NoReverseMatch: Reverse for 'academypage_url' with arguments '('new', None)' and keyword arguments '{}' not found.
所以请告诉我如何在测试用例或反向中处理这些可选URL。
修改:
url(r'^getTest/(?P<action>\w+)/(?P<id>\d*)$', 'app.views.create_edit_academypage', name='academypage_url'),
答案 0 :(得分:5)
您使视图函数的id
参数可选,但它在url模式中不是可选的。您渴望将模式重写为:
r'^getTest/(?P<action>\w+)/(?P<id>\d+)?$'
=&GT;整个'id'子模式是可选的,但如果它不是必须匹配一个或多个数字。
完成后,您可以通过不传递任何args
或kwargs
参数来反转网址:
url = reverse('yescourse:academypage_url')
或传递空名单
url = reverse('yescourse:academypage_url', args=[])
或传递None
url = reverse('yescourse:academypage_url', args=None)
通过传递包含None
的列表但不。