gpt4 book ai didi

python - 当两个应用程序使用相同的命名空间时,reverse() 引发 NoReverseMatch

转载 作者:太空狗 更新时间:2023-10-30 01:21:26 27 4
gpt4 key购买 nike

我正在尝试在单元测试中使用 reverse(),但它无法解析 url。

测试.py:

from django.core.urlresolvers import reverse
from rest_framework import status
from rest_framework.test import APITestCase

class MyTest(APITestCase):
def test_cust_lookup(self):
url = reverse('v1:customer')
# Other code

测试用例在测试的第一行失败,错误如下:

NoReverseMatch: Reverse for 'customer' with arguments '()' and keyword arguments '{}'  not found. 0 pattern(s) tried: []

“尝试了 0 个模式”是否意味着测试甚至无法找到根 urls.py?还是我配置有误?

proj/settings.py:

ROOT_URLCONF = 'proj.urls'

proj/myapp/urls.py:

from django.conf.urls import url
import views

urlpatterns = [
url(r'cust/$', views.CustomerView.as_view(), name='customer')
]

proj/urls.py:

urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^api1/v1/', include('myapp1.urls', namespace='v1')),
url(r'^api2/v1/', include('myapp2.urls', namespace='v1'))
]

最佳答案

在同一个 url 命名空间下没有不同的应用程序,Django 无法处理它并且不会告诉你这就是问题所在。将命名空间更改为对每个应用程序都是唯一的。

urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^api1/v1/', include('myapp1.urls', namespace='app1-v1')),
url(r'^api2/v1/', include('myapp2.urls', namespace='app2-v1'))
]

使用 reverse('app1-v1:customer') 反转 url。

关于python - 当两个应用程序使用相同的命名空间时,reverse() 引发 NoReverseMatch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31240840/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com