在Django中调用外部应用程序的视图

时间:2014-10-28 16:23:58

标签: python django django-views

我有一个名为'刊物'而我正试图打电话给那些出版物'我的Django项目中的视图。我一直收到以下错误:

from citations_app import views as citations_app_views
   ImportError: No module named citations_app

所以,我不能"加载"外部应用程序的视图,如果可以的话,我不确定我是否正确调用它。我试图使用我的" display_info"查看函数以获取数据列表,然后将该数据传递给外部应用程序" list_view"查看功能。 这是我的citations.py视图文件:

from django.db.models import get_app
citations_app = get_app("publications")
from citations_app import views as citations_app_views
from citations_app_views import list as list_view

def display_info(request):
    citations = request.GET.getlist('citation-selection')
    return list_view(request, citations)

知道我为什么会收到导入错误,如果我正在调用" list_view"查看功能正确吗? 谢谢!!

目录结构:

MyApp1/
  models/ 
    publications.py
    citations.py
    items.py
  views/
    publications.py
    citations.py
    items.py
MyApp2/
Publications/ (not physically present at this location but installed as part of requirements.txt file)

我在views / items.py。

工作

1 个答案:

答案 0 :(得分:0)

忘记get_app(),你只需要让你的目录结构和导入路径正常工作。

听起来你说问题是本地publications.py正在影响publications应用?您必须使用Python 2,因为在Python 3中不再存在这种歧义。要消除Python 2中的歧义,请将from __future__ import absolute_import添加到文件的顶部。完成后,from publications import ...将始终引用顶级应用。要访问本地publications.py,您将使用from .publications import ...from myapp1.models.publications import ...

如果您想了解有关绝对/相对导入问题的更多信息,请参阅PEP 328