我是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()
函数的方法时,我都会收到错误。我可以理解这个函数的价值,并且想知道为什么给了我上面描述的错误。
答案 0 :(得分:3)
只需在urlpatterns = [ ..
中写url_patterns
而不是poll.views.py
。