2016-04-06 9 views
1

私は、オープンショーのdjango "Hello World"の例を作ることは不可能でした。私は、urls.py、views.py、およびwsgi.pyに基づいて最も基本的な例を実行しようとしています。 これは(あなたには、いくつかの試練を見ることができます#で)インポートビューで構造django openshiftインポートビューのエラー

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スレッドをたくさん読んだが、何も答えは無かった。 Isteadをインポートすると、views.pyのコンテンツをurls.pyにコピーすると問題なく動作します。

ここで私は解決策を見つけようと追加sys.path.appendのフルwsgi.py内容、:

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でそれを修正(日食pydev)。 物事はオープンシフトと関係がある、私はいくつかの地元の例を作ったし、まったく問題はない。

お願いします。私はオープンシフトが少なくとも初心者の方では、ジャンゴとはうまくいかないと思っています。 おかげ

答えて

1

あなたの意見は、URLのと同じディレクトリにあるので、相対インポートを使用してみてください:

from . import views 

そしておそらく絶対/相対輸入使用方法についてのpythonのドキュメント読み:https://docs.python.org/2.5/whatsnew/pep-328.html

+0

おかげで、これは私がやった最初のことです。あなたは私のurls.pyの#でこの行を見ることができます。私はシンプルだが本当に実用的な例が必要だと思う。 –

+0

ああ申し訳ありませんでしたが役に立たなかった。もう1つの選択肢は文字列に入れて、このようなビューをインポートしないことです:githubのopenshiftの例:https://github.com/openshift/django-ex/blob/master/project/urls.py – fips

+0

はい、ありがとうこれはうまくいく。また、views.pyのコンテンツをurls.pyにコピーするだけで動作します。 しかし、私はこのように遠くに行くことはありません、私は仕事を基本的なインポートにしたい、そうでなければ私はプロジェクトにビューを使用することはできません。 –