2012-08-30 6 views
7

webfactionalでサーバー上でwebappを実行しようとすると、STATIC_URLとSTATIC_ROOTに関する問題が2時間続きました。サーバー上のDjangoのSTATIC_ROOT

ウェブページを読み込むと、{{STATIC_URL}}のリンクが動作しているかロード中であることを除いて、すべてのリクエストがうまく機能します。

だから、放火犯に表示される一般的なエラーは次のとおりです。

GET http://mydomain/static/extras/h5bp/js/libs/modernizr-2.5.3.min.js 500 (Internal Server Error) 

私のセットアップは次のとおりです。

urls.py 私は何もしなかった、と静的ファイルについては何もありません。

settings.py DEBUG = Falseを

STATIC_ROOT = '/home/mydomain/webapps/static_app/' 
STATIC_URL = 'http://mydomain/static/' 
STATICFILES_DIRS =() 

views.py ビュー例

@csrf_exempt 
def IndexView(request): 
    try: 
     request.user.is_authenticated() 
    except AttributeError: 
     return render_to_response('index.html', 
           {'request': request,}, 
           context_instance=RequestContext(request)) 

    return render_to_response('index.html', 
        {'request': request, 'profile' : request.user}, 
        context_instance=RequestContext(request)) 

index.htmlの井戸

<script src="{{ STATIC_URL }}extras/h5bp/js/libs/modernizr-2.5.3.min.js"></script> 

を見つけていないコードの一部、私はすべてのポイントに従います: https://docs.djangoproject.com/en/1.4/howto/static-files/ と、この別の1: http://docs.webfaction.com/software/django/getting-started.html

私は正しいインストール済みのアプリケーション、ミドルウェア、template_contextsを使用しています。

私が何かを見逃している場合は、私を理解するのを手伝ってください。

ありがとうございます!

--edit

私はちょうど= Trueの意志が正常に動作しますDEBUGを変更した場合、私は、言わなければなりません。

ためurls.pyに私は、コードのこの部分を持っている:

if settings.DEBUG: 
    # static files (images, css, javascript, etc.) 
    urlpatterns += patterns('', 
     (r'^media/(?P<path>.*)/$', 'django.views.static.serve', { 
     'document_root': settings.MEDIA_ROOT})) 

答えて

11

2のものは、開発環境で必要とされていない生産environentに起こる必要があります。

manage.py collectstaticを実行する必要があります。これは、すべての静的ファイルをSTATIC_ROOTディレクトリに収集します。

STATIC_ROOTディレクトリにSTATIC_URLのURLを提供する必要があります。どのように正確に生産の設定に依存します。これはdjangoに関連するものではありません。重要なのはSTATIC_ROOTの内容はSTATIC_URLです。

Apacheを使用している場合は、URLの別名をディレクトリに設定します。

Alias /static/ /path/to/my/static_root/ 

あなたはnginxのを使用している場合、それは次のようになり、私はちょうどその場合、あなたは文字通りのファイルを提供しています静的なアプリケーションをセットアップし、あなたがwebfactionを使用している実現

location = /static/ { 
    alias /path/to/my/static_root/; 
} 

のようなもの定義したURLのターゲットディレクトリ。私は正確な手順を見るためにWebFactionログインを覚えようとしていますが、把握するのは難しいことではありません。

更新: webfactionにログインしました。シンボリックリンクであるアプリケーションを作成することができます。簡単!

/YOUR_STATIC_URL /を提供するシンボリックリンクアプリを作成し、/ YOUR_STATIC_ROOT /をポイントします。完了!

+0

ありがとう、完璧な作品。 ちょっと質問があり、メディアファイルについてはどうですか? 私たちはこのためにpython manage.py collectstaticを持っていませんか? – cleliodpaula

+0

一般に、メディアファイルはユーザーがアップロードしたファイルの方が多く、展開時には収集できません。 –

関連する問題