在 Django 1.11 中,在项目 URLconf 文件中包含应用程序 URLconf 文件时出现循环导入错误

In Django 1.11 getting Circular Import Errors When including app URLconf files in project URLconf File

我是 Django 的新手,已经学习了几个教程以真正熟悉结构化,现在 运行 正在学习官方教程。

我创建了一个 polls 应用程序,其中有一个 polls/views.py 文件如下:

from django.shortcuts import render
from django.http import HttpResponse


# Create your views here.
def index(request):
    return HttpResponse("Hello, World. You're at the polls index.")

我还使用以下代码创建了一个 App URLconf 文件 polls/urls.py

from django.conf.urls import url

from . import views

url_patterns = [
    url(r'^$', views.index, name='index'),
]

这与 Django 教程中的做法几乎完全相同。

我的问题是当我在项目级别的 projectname/url.py 主文件中指定 url 路由时:

from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
    url(r'^polls/', include('polls.urls')),
    url(r'^admin/', admin.site.urls),
]

执行此操作时,出现以下错误:

django.core.exceptions.ImproperlyConfigured: The included URLconf '<module 'polls.urls' from 'ProjectFolder\polls\urls.py'>' 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.

这就是 Django 官方教程规定的方式。但是,如果我从应用程序中明确导入 polls/views.py 文件,我可以按如下方式完成任务:

from django.conf.urls import url
from django.contrib import admin
from polls import views


urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^polls/', views.index),

]

我最关心的是我创建的每个 app/urls 文件的导入都是这种方法所必需的,以及与官方 Django 指令的明显差异。

我什至犹豫要不要问这个问题,因为我觉得这样一个根本问题肯定有一个简单的解决办法。任何帮助将不胜感激。

澄清一下,我可以通过从应用程序显式导入视图文件来解决该错误。每当使用 Django 文档描述的使用 include() 函数的方法时,我都会收到错误消息。我很欣赏这个函数的价值,并且想知道 为什么 会给我上述错误。

只需在 poll.views.py 中写 urlpatterns = [ .. 而不是 url_patterns