Я недавно начал разработку приложения с django, и this - это ссылка на весь проект.
это структура проекта:
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
этоfile project/api/town.urls.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')
]
И файл для config/settings/urls.py
:
from django.contrib import admin
from django.urls import path, include
# from .views import views
urlpatterns = [
path('admin/', admin.site.urls),
# path('', views.index)
path('api/', include('project.api.city.urls', namespace='city')),
path('api/', include('project.api.town.urls', namespace='town'))
]
API работает очень хорошо, когда я использую эту ссылку для проверки: localhost:8000/api/town
но когда я пытаюсь запустить модульные тесты в pycharm, к сожалению, возникает какая-то ошибка. Это часть тестового модуля, ошибка которой возникает в DETAIL_TOWN_URL = reverse ('town: town-detail'):
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.
Очевидно, обратный наклоннайдите термин town-detail
, но, как вы можете видеть в project/api/town.urls.py
, я определил town-detail
, а также town
URL-адреса приложений в основных URL-адресах проекта как пространство имен town
.
Когда я комментирую DETAIL_TOWN_URL
, я понимаю, что тесты с CREATE_TOWN_URL
пройдут, но когда DETAIL_TOWN_URL
определен и не прокомментирован, возникает ошибка.
Итак, почему происходит эта ошибка и как я могу ее исправить?