在django 1.11中,在项目URLCONF文件中加入应用程序URLCONF文件时会遇到循环导入错误



我是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.")

我还创建了一个带有以下代码的应用程序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),
]

我直接关注的是,这种方法需要我创建的每个应用程序/URL文件的导入,以及与官方Django指令的明显差异。

我犹豫不决地问这个问题,因为我觉得这样的基本问题必定会很容易解决。任何帮助将不胜感激。

要澄清,我可以通过从应用程序中明确导入视图文件来解决错误。每当使用Django文档使用include()函数的方法时,我都会收到错误。我可以欣赏此功能的价值,并且想知道为什么给我上述错误。

只是在您的poll.views.py中写下urlpatterns = [ ..,而不是url_patterns

最新更新