Python django URL.exceptions.NoReverseMatch当我想在unittests中使用反向函数时发生错误?

Python django URL.exceptions.NoReverseMatch当我想在unittests中使用反向函数时发生错误?,python,django,unit-testing,namespaces,pycharm,Python,Django,Unit Testing,Namespaces,Pycharm,我最近开始用django开发一个应用程序,它是整个项目的链接 这是项目结构: config/ env/ .env files requirements/ __init__.py ... settings/ __init__.py base.py local.py __init__.py urls.py views.py wsgi.py proje

我最近开始用django开发一个应用程序,它是整个项目的链接

这是项目结构:

config/
    env/
        .env files
    requirements/
        __init__.py
        ...
    settings/
        __init__.py
        base.py
        local.py
    __init__.py
    urls.py
    views.py
    wsgi.py
projects/
    api/
        town/
            apps.py
            urls.py
            views.py
        ...
    core/
        models/
            town.py
        serializers/
            town_serializer.py
        ...
tests/
    test_town.py
manage.py
这是文件
project/api/town.url.py

from django.urls import path

from . import views

app_name = 'town'

urlpatterns = [
    path('town/', views.CreateTownView.as_view(), name='town-list'),
    path('town/<int:pk>/', views.TownViewSet.as_view(), name='town-detail')
]
]

当我使用此链接签出时,API工作正常:
localhost:8000/API/town
,但当我尝试在pycharm中运行单元测试时,不幸的是出现了一些错误。这是测试模块的某个部分,错误发生在详细信息\u TOWN\u URL=reverse('TOWN:TOWN DETAIL'):

这就是错误:

raise NoReverseMatch(msg)
django.urls.exceptions.NoReverseMatch: Reverse for 'town-detail' with no arguments not found.
显然,reverse找不到术语
town detail
,但正如您在
project/api/town.url.py
中所看到的,我在项目主URL中将
town detail
town
应用程序URL定义为命名空间
town

当我对
DETAIL\u-TOWN\u-URL
进行注释时,我意识到使用
CREATE\u-TOWN\u-URL
进行的测试将通过,但当定义了
DETAIL\u-TOWN\u-URL
且未对其进行注释时,就会发生错误


那么,为什么会发生此错误以及如何修复它呢?

url中的Town detail required int参数

试着用kwargs

反面('town-detail',kwargs={'pk':1})

或args 反面('town-detail',args=[1]))

有到文档的链接

城镇详细信息需要url中的int参数

试着用kwargs

反面('town-detail',kwargs={'pk':1})

或args 反面('town-detail',args=[1]))

有到文档的链接

看一看反面\u lazy:看一看反面\u lazy:我刚发现,回来要回答,但我看到了你的回答。无论如何,非常感谢你花了这么多时间在上面。我刚刚发现了,回来给你一个答案,但我看到了你的回复。无论如何,非常感谢你花了这么多时间
from django.db import IntegrityError
from django.test import TestCase
from project.core.models.town import Town
from django.urls import reverse

from rest_framework.test import APIClient
from rest_framework import status

import unittest

CREATE_TOWN_URL = reverse('town:town-list')
DETAIL_TOWN_URL = reverse('town:town-detail')
raise NoReverseMatch(msg)
django.urls.exceptions.NoReverseMatch: Reverse for 'town-detail' with no arguments not found.