У меня небольшой опыт работы с Django и API, и недавно я начал разрабатывать это приложение.
Моя структура кода выглядит следующим образом:
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.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'))
]
Я использовал маршруты типа localhost:8000/api/town
, и у меня не было проблем с работой с API, и они работаютпросто хорошо. Единственная проблема возникает, когда я пытаюсь запустить тестовый модуль. Это часть теста, в которой появляется ошибка: - {
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.
Я уже определил пространства имен в основных URL-адресах в urls.py
в config
, а также назвали town-list
и town-detail
в town
URL-адресах, но не знаю, почему это происходит!
Этот является ссылкой на проект. Пожалуйста, помогите мне здесь.
Спасибо