在Django 1.11中获取循环导入错误在项目URLconf文件

时间:2017-09-20 19:59:27

标签: django django-urls 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.")

我还使用以下代码创建了一个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文件中指定网址路由时:

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()函数的方法时,我都会收到错误。我可以理解这个函数的价值,并且想知道为什么给了我上面描述的错误。

1 个答案:

答案 0 :(得分:3)

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