【问题标题】:Django: Importing a view from another appDjango:从另一个应用程序导入视图
【发布时间】:2017-02-20 05:10:53
【问题描述】:

我有一个项目和一个应用程序。我正在尝试使用项目中的 urls.py 来激活应用程序中的视图。

错误信息:import homepage.index ModuleNotFoundError:没有名为“homepage.index”的模块

在项目 urls.py 我有这个导入语句:

项目/urls.py

from homepage.views import index

然后在项目的 urls.py 中,urlpatterns[] 数组包含这个 引用应用的视图:

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^$', homepage.views.index, name='index'),
]

主页/views.py

def index(request):
    return HttpResponse("My Homepage")

错误可能在哪里?

【问题讨论】:

    标签: python django


    【解决方案1】:

    您没有正确导入。改变

    url(r'^$', homepage.views.index, name='index'),
    

    url(r'^$', index, name='index'),
    

    【讨论】:

      【解决方案2】:

      Django 是一个用 python 编写的网络框架,不涉及任何魔法。您在 urls.py 中指定视图的完整路径

      # here the view is available as index
      from homepage.views import index
      # so reference the view as index
      url(r'^$', index, name='index'),
      

      如果你需要引用完整的命名空间,

      # here the view can be imported as you intented
      import homepage
      url(r'^$', homepage.views.index, name='index'),
      

      注意事项
      ModuleNotFound在引用的模块不可用时引发, 在这种情况下,python 将尝试使用 homepage 模块,但它在当前上下文中不可用。
      当引用的属性或模块在已导入的模块中不可用或您正在使用时,将引发ImportError from module import x

      >>> from os import wow
      Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
      ImportError: cannot import name 'wow'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-03
        • 1970-01-01
        • 1970-01-01
        • 2012-07-11
        • 2017-02-24
        • 1970-01-01
        相关资源
        最近更新 更多