【问题标题】:Django cant import my app in urls.pyDjango 无法在 urls.py 中导入我的应用程序
【发布时间】:2015-03-18 13:42:51
【问题描述】:

我在以 url 模式导入我的应用程序时遇到问题,但一切似乎都已到位。我在 from fair_app import views 中遇到错误,并且错误 name 'News' is not defined

目录:

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',
)

【问题讨论】:

  • 帖子已编辑但仍无出路
  • 如果您的目录列表准确无误,您将使用_init_.py 而不是__init__.py(每边两个下划线)。

标签: python django


【解决方案1】:

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

from fairy.fairy_app.views

或者

from ..fairy_app.views

【讨论】:

    【解决方案2】:

    在您的 urls.py 中,您引用新闻视图而不导入它。您将视图文件作为模块导入。

    所以你可以这样做:

    views.News.as_view()
    

    或:

    from fairy_app.views import News
    

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

    【讨论】:

    • 你的方式是正确的我在我的问题中犯了一个错误,即无法导入我的应用程序。我已经尝试了一切,但无法导入我的应用程序。我在浏览器中遇到同样的错误(无法导入名称新闻)。顺便说一句,我正在使用 PyCharm IDE,我在“from fair_app”下得到红色错误行。就像没有创建应用程序一样。
    • 你添加到 INSTALLED_APPS 了吗?
    【解决方案3】:

    我发现了同样的问题,但已经解决了。

    在应用级别为 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`
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-17
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 2012-03-06
      • 2013-05-24
      • 1970-01-01
      相关资源
      最近更新 更多