В настоящее время при попытке настроить мой проект для работы с маршрутизатором, так как я планирую использовать несколько наборов представлений, кажется, что все компоненты работают по отдельности, указание пути вручную не приводит к ошибкам и работает как задумано. Однако, как только я пытаюсь зарегистрировать свой viewset на маршрутизаторе, все это взрывается
Сравнили то, что я сделал, с руководством на сайте Django Rest Framework, и все, кажется, сделано правильно. Я разбил его на мельчайшие компоненты, которые я могу понять и до сих пор не уверен.
Мой код:
urls.py
# endpoint
templateResponder = TemplateViewSet.as_view({
'get': 'gotget',
'post': 'gotpost',
})
# define router and add viewsets
router = DefaultRouter()
router.register(r'template', views.TemplateViewSet) # THIS LINE IS BREAKING EVERYTHING
urlpatterns = [
# path('template/', templateResponder, name='templateResponder'), # If i add the viewset manually it works
path('', include(router.urls)),
path('response', views.request_maker),
path('json', views.response_maker),
]
мой просмотр
class TemplateViewSet(viewsets.ViewSet):
"""
The Template ViewSet
"""
# serializer = TestSerializer # currently not used
# need to specify a queryset maybe?
@action(detail=False, methods=['GET'])
def gotget(self, request):
return Response("A GET request has been received!!!", status=status.HTTP_200_OK)
@action(detail=True, methods=['POST'])
def gotpost(self, request):
return Response("A POST request has been received!!!", status=status.HTTP_201_CREATED)
Я получаю эти ошибки при попытке запуска. Если я закомментирую строку, которую я прокомментировал, нарушает все, то это не произойдет.
django.core.exceptions.ImproperlyConfigured: включенный URLconf 'projectB.urls', по-видимому, не содержит никаких шаблонов. Если вы видите в файле действительные шаблоны, возможно, проблема вызвана циклическим импортом.
TypeError: объект 'module' не повторяется
редактировать: полные ошибки
(venv) C:\Users\Project\Backend\projectB>python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...
Exception in thread django-main-thread:
Traceback (most recent call last):
File "C:\Users\Project\venv\lib\site-packages\django\urls\resolvers.py", line 581, in url_patterns
iter(patterns)
TypeError: 'module' object is not iterable
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Program Files\Python36\lib\threading.py", line 916, in _bootstrap_inner
self.run()
File "C:\Program Files\Python36\lib\threading.py", line 864, in run
self._target(*self._args, **self._kwargs)
File "C:\Users\Project\venv\lib\site-packages\django\utils\autoreload.py", line 54, in wrapper
fn(*args, **kwargs)
File "C:\Users\Project\venv\lib\site-packages\django\core\management\commands\runserver.py", line 117, in inner_run
self.check(display_num_errors=True)
File "C:\Users\Project\venv\lib\site-packages\django\core\management\base.py", line 390, in check
include_deployment_checks=include_deployment_checks,
File "C:\Users\Project\venv\lib\site-packages\django\core\management\base.py", line 377, in _run_checks
return checks.run_checks(**kwargs)
File "C:\Users\Project\venv\lib\site-packages\django\core\checks\registry.py", line 72, in run_checks
new_errors = check(app_configs=app_configs)
File "C:\Users\Project\venv\lib\site-packages\django\core\checks\urls.py", line 40, in check_url_namespaces_unique
all_namespaces = _load_all_namespaces(resolver)
File "C:\Users\Project\venv\lib\site-packages\django\core\checks\urls.py", line 57, in _load_all_namespaces
url_patterns = getattr(resolver, 'url_patterns', [])
File "C:\Users\Project\venv\lib\site-packages\django\utils\functional.py", line 80, in __get__
res = instance.__dict__[self.name] = self.func(instance)
File "C:\Users\Project\venv\lib\site-packages\django\urls\resolvers.py", line 588, in url_patterns
raise ImproperlyConfigured(msg.format(name=self.urlconf_name))
django.core.exceptions.ImproperlyConfigured: The included URLconf 'projectB.urls' does not appear to have any patterns in it. If you see valid patterns in the file then the issue is probably caused by a circular import.