7

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

ウェブページを読み込むと、{{STATIC_URL}}のリンクが機能しているか読み込まれていることを除いて、すべてのリクエストが正常に機能します。

したがって、firebugに表示される一般的なエラーは次のとおりです。

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/ そしてこれは別のポイントです:http: //docs.webfaction.com/software/django/getting- start.html

正しくインストールされているアプリ、ミドルウェア、template_contextsを使用しています。

私が何かを逃しているなら、私が理解するのを手伝ってください。

前もって感謝します!

- 編集

言わなければならないのは、DEBUG = Trueを変更するだけで、問題なく動作するということです。

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}))
4

1 に答える 1

11

開発環境では必要のない本番環境では、2つのことが発生する必要があります。

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

URLSTATIC_ROOTでディレクトリを提供する必要があります。STATIC_URLどの程度正確に本番環境に依存します。これはdjangoとは関係ありません。重要なのは、STATIC_ROOTコンテンツがで利用できることですSTATIC_URL

Apacheを使用しているとしましょう。たとえば、URLをディレクトリにエイリアスします。

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

nginxを使用している場合は、次のようになります

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

私はあなたがwebfactionを使用していることに気づきました。その場合、あなたはあなたが定義したURLのターゲットディレクトリで文字通りファイルを提供する静的アプリケーションをセットアップしました。正確な手順を確認するためにwebfactionのログインを覚えようとしていますが、理解するのは難しいことではありません。

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

/ YOUR_STATIC_URL /を提供するシンボリックリンクアプリを作成し、それを/YOUR_STATIC_ROOT/にポイントします。終わり!

于 2012-08-30T19:57:25.320 に答える