在这样的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”的反向内容。
我为什么要得到这个?使用此方法有什么错误?
谢谢。
答案 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: