Регистрация viewset с роутером ломает все - круговой импорт, объект «Модуль» не повторяется - PullRequest
0 голосов
/ 07 июля 2019

В настоящее время при попытке настроить мой проект для работы с маршрутизатором, так как я планирую использовать несколько наборов представлений, кажется, что все компоненты работают по отдельности, указание пути вручную не приводит к ошибкам и работает как задумано. Однако, как только я пытаюсь зарегистрировать свой 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.
...