【问题标题】:django openshift import views errordjango openshift 导入视图错误
【发布时间】:2016-04-06 09:40:21
【问题描述】:

我无法在 openshift 上制作任何 django“Hello World”示例。我只是想做一个基于urls.py、views.py和wsgi.py的最基本的例子。 这是结构

wsgi
-myproject
--myproject
---__init__.py
---settings.py
---urls.py
---views.py
---wsgi.py

还有urls.py,导入视图在哪里(带#可以看到一些试验)

from django.conf.urls import include, url
from django.contrib import admin
#from . import views
#import views
from myproject import views
urlpatterns = [
    url(r'^$', views.index, name='index'),
    url(r'^admin/', include(admin.site.urls)),
]

问题是我无法摆脱“ImportError - 无法导入名称视图”的情况。我已经阅读了很多 stackoverflow 线程,尝试了很多答案,但一无所获。 如果我将views.py内容复制到urls.py中,而不是导入,它可以正常工作。

这里是 wsgi.py 内容,充满了我添加的 sys.path.append 以试图找到解决方案:

import os, sys
sys.path.append(os.path.join(os.environ['OPENSHIFT_REPO_DIR']))
sys.path.append(os.path.join(os.environ['OPENSHIFT_REPO_DIR'], 'wsgi'))
sys.path.append(os.path.join(os.environ['OPENSHIFT_REPO_DIR'], 'myproject'))
sys.path.append(os.path.join(os.environ['OPENSHIFT_REPO_DIR'], 'myproject'))
os.environ['DJANGO_SETTINGS_MODULE'] = 'myproject.settings'
virtenv = os.environ['OPENSHIFT_PYTHON_DIR'] + '/virtenv/'
os.environ['PYTHON_EGG_CACHE'] = os.path.join(virtenv, 'lib/python3.3/site-packages')
virtualenv = os.path.join(virtenv, 'bin/activate_this.py')
try:
    execfile(virtualenv, dict(__file__=virtualenv))
except IOError:
    pass

我在 openshift web 控制台中创建了这个项目,并使用 liclipse (eclipse pydev) 对其进行了修改。 和openshift有关的事情,我做了一些本地的例子,完全没有问题。

请帮助 - 我真的开始认为 openshift 不适用于 django,至少对于初学者来说是这样。 谢谢

【问题讨论】:

    标签: django import openshift


    【解决方案1】:

    尝试使用相对导入,因为您的视图与 url 位于同一目录中:

    from . import views
    

    也许可以阅读有关如何使用绝对/相对导入的 python 文档:https://docs.python.org/2.5/whatsnew/pep-328.html

    【讨论】:

    • 谢谢,但这是我做的第一件事。您可以在我的 urls.py 中看到带有 # 的这一行。我想我需要一个简单但真正有效的例子。
    • 哦,很抱歉当时没有帮助。另一种选择是把它放在一个字符串中,不要像这样导入视图:github上的openshift示例:github.com/openshift/django-ex/blob/master/project/urls.py
    • 是的,谢谢,这行得通。如果我只是将views.py 内容复制到urls.py 中,也可以使用。但我不会走得太远,我想让工作成为一个基本的导入,否则我将永远无法在项目中使用视图。
    • 项目目录和应用程序目录应该是分开的。该项目通常包含设置、url、wsgi 等。urls.py 引用您的应用程序的视图 - 在本例中为 django-ex/welcome/views.py。 urls.py 中的 url 函数可以接受您的索引函数对象(如您在上面所做的)或具有其限定名称的字符串,因此本质上它与导入它具有相同的效果。我不确定我是否看到您所描述的限制。
    猜你喜欢
    • 1970-01-01
    • 2019-04-19
    • 2014-02-24
    • 1970-01-01
    • 2021-12-08
    • 2015-10-17
    • 2013-04-14
    • 1970-01-01
    • 2015-02-02
    相关资源
    最近更新 更多