【发布时间】:2018-03-02 00:47:06
【问题描述】:
我是 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() 函数的方法时,我都会收到错误消息。我很欣赏这个函数的价值,并且想知道为什么会出现上述错误。
【问题讨论】:
-
polls/views.py文件是我问题中的第一个代码块。 -
你可以试试
from polls.views import index。我认为您在两个文件中导入视图时存在冲突。 -
是的,请参考我的问题中的第二个代码块。
-
是的,抱歉我已经更新了我的评论,我一开始没看到
-
做了一个回答,我认为你的错误是关于命名模式。见下文
标签: django django-urls urlconf