如何使用django.core.urlresolvers.reverse获取视图的URL

时间:2019-02-04 13:05:38

标签: django unit-testing reverse

在这样的Django项目中,urls.py中有URL模式。

urlpatterns = [
    url(r'^web/', include('project.web.weburls')),
]

在我的weburls.py文件中,我有以下内容:

urlpatterns = [
    url(r'^$', webview.home)
]

在webview文件中,我有这个:

def home(request):
    pass

在我的测试文件中,我编写了下面的测试用例,

url = reverse("project.web.weburls.webview.home")

但是它给了我一个错误。 NoReverseMatch:找不到“ project.web.weburls.webview.home”的反向内容。

我为什么要得到这个?使用此方法有什么错误?

谢谢。

2 个答案:

答案 0 :(得分:0)

首先,您需要给您的网址路由命名。

path('archive/', views.archive, name='news-archive')

从django.urls导入反向

然后,您可以使用reverse()函数获取url反向。 请从下面的链接中查看django文档:

https://docs.djangoproject.com/en/2.1/ref/urlresolvers/

看看在单元测试中使用反向的Django测试。

https://django-testing-docs.readthedocs.io/en/latest/views.html#getting-into-context

答案 1 :(得分:0)

您反转了Django项目的URL名称空间,而不是python代码。为此,您必须调用reverse('home')reverse(home)。与docs进行比较:

  

reverse(视图名称,urlconf = None,args = None,kwargs = None,current_app = None)   viewname可以是URL模式名称或可调用视图对象。例如,给定以下URL: