Django无法在urls.py中导入我的应用

时间:2015-03-18 13:42:51

标签: python django

我在使用网址模式导入我的应用时出现问题,但一切似乎都已到位。我在中从fairy_app导入视图中收到错误,并且错误名称'新闻'未定义

目录:

fairy-

  fairy-
    _init_.py
    settings.py
    urls.py
    wsgi.py

  fairy_app-
    _init_.py
    admin.py
    models.py
    tests.py
    views.py

  db.fairy
  manage.py

views.py

from django.shortcuts import render
from django.views.generic import TemplateView

# Create your views here.

class News(TemplateView):
    template_name = 'news.html'

urls.py

from django.conf.urls import patterns, include, url
from django.contrib import admin
from fairy_app.views import News

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'fairy.views.home', name='home'),
    # url(r'^blog/', include('blog.urls')),

    url(r'^admin/', include(admin.site.urls)),
    url(r'^news/', News.as_view()),
)

setting.py

INSTALLED_APPS = (

    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'fairy_app',
)

3 个答案:

答案 0 :(得分:1)

在您的urls.py中,您无需导入即可引用新闻视图。您将视图文件导入为模块。

所以你可以这样做:

views.News.as_view()

或:

from fairy_app.views import News

如果您有很多视图类,第二种方式会更短但会变得不方便,所以我更喜欢第一种方式。

答案 1 :(得分:1)

我发现了同样的问题,但得到了解决。

在应用程序级别为URL创建一个新的python文件 在fairy // urls文件中使用include函数来包含应用程序的所有其他URL并在新文件中导入视图

例如;

#in url.py

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

#created a new file(url.py) in greetings app
#in greetings/url.py

from . import views 
urlpatterns = [
url(r'^$',views.greet),
]

#greet is the function in my views`

答案 2 :(得分:0)

我有同样的问题。我通过给出完整的路径来解决它

from fairy.fairy_app.views

或者

from ..fairy_app.views