我无法在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,至少对于初学者来说。 感谢
答案 0 :(得分:1)
尝试使用相对导入,因为您的视图与网址在同一个目录中:
from . import views
也许可以阅读关于如何使用绝对/相对导入的python文档:https://docs.python.org/2.5/whatsnew/pep-328.html