如何在测试中使用Django的反向解析?
如何在测试中使用Django的反向解析?
我不知道如何在Django中使用反转函数。我得到了这个错误信息:ValueError: 字典更新序列元素#0的长度为1,而需要2。
我可以直接硬编码URL,这样可以正常工作,但我希望以标准方式完成。
主urls.py
urlpatterns = [ url(r'^nmailadmin/', admin.site.urls), url(r'^api/v1/',include('Core.Login.urls',namespace='login')), url(r'^api/v1/mail/',include('Core.Mail.urls',namespace='mail')), ]
我为登录和邮件API设置了命名空间。当我尝试访问邮件URL时,如下所示:
def test_0list_folders(self): url = reverse('mail:folder_list', kwargs={'server':0}) response = self.client.get('/api/v1/mail/folder_list/0/', follow=True) self.assertEqual(status.HTTP_200_OK, response.status_code)
我得到了以下错误:
---------------------------------------------------------------------- Traceback (most recent call last): File "/home/next/PycharmProjects/Nmail/Nmail-Server/Core/Mail/tests.py", line 25, in test_0list_folders url = reverse('mail:folder_list', kwargs={'server':0}) File "/home/next/venv/NmailVenv/lib/python3.6/site-packages/django/urls/base.py", line 91, in reverse return force_text(iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs))) File "/home/next/venv/NmailVenv/lib/python3.6/site-packages/django/urls/resolvers.py", line 436, in _reverse_with_prefix self._populate() File "/home/next/venv/NmailVenv/lib/python3.6/site-packages/django/urls/resolvers.py", line 309, in _populate dict(defaults, **pattern.default_kwargs), ValueError: 字典更新序列元素#0的长度为1,而需要2 ----------------------------------------------------------------------
这是我的邮件应用的urls文件。
urlpatterns = [ url(r'folder_list/(?P\d+)/$', folder_list,name='folder_list'), url(r'^auth_login/$', login_auth, name='auth_login'), url(r'viewmsg/(?P \d+)/(?P .*?)/(?P \d+)/$', viewmsg, name='viewmsg'), url(r'action/(?P .*?)/$', action, 'action'), ]
Django版本:Django==1.11.7