2012-03-14 5 views
2

無料アカウントを使用してHerokuにアプリをデプロイしました。ヘロクでdjangoアプリをデプロイするときにMEDIA_ROOTとMEDIA_URLを設定する

私はjsファイルとcssファイルを 'media'というフォルダの中に入れています。これらは通常静的に配置されているように見えますが、私が構築していたプロジェクトはすでにメディアに入っています。

は、だから私は持っている:

<link rel="stylesheet" type="text/css" media="screen" href="{{ MEDIA_URL }}css/style.css" /> 

そして、私のsettings.pyファイルの中に、私が持っている:

abspath = lambda *p: os.path.abspath(os.path.join(*p)) 

PROJECT_ROOT = abspath(os.path.dirname(__file__)) 

MEDIA_ROOT = abspath(PROJECT_ROOT, 'media') 
MEDIA_URL = '/media/' 

を、私は私のアプリを展開した後、私が設定:

DEBUG = False 

そして今を私のテンプレートはCSSなしでレンダリングされます。私は周りを検索し、MEDIA_ROOTとMEDIA_URLの問題のように見えます。私が探しているものの大部分は、静的ファイルを本番環境で動作させること、または開発中にメディアファイルを取得することです。これは、本番環境で動作するメディアファイルを取得するように見えます。

正確にMEDIA_ROOTとMEDIA_URLをどのように設定する必要がありますか?

編集:私は、私は「メディア」フォルダには何もアップロードされることはありません指摘しなければなりません。

答えて

1

Amazon S3は最初の事ツーしようと多くのブログ上にあるように思わ|

静的ファイルを空き容量のある場所に置くことができる場合は、DBに入れない限り試してみてください。

+0

私はすべての静的ファイルをS3に置き、動作させました。すべての管理メディアファイルをそこに置くことになっているかどうか知っていますか?それは私がやったことですが、そのためのよりよい方法があるようです... – SecondMatter

+0

admin files?彼らは英雄の箱から出なかった。プロジェクトを作成した後の最初のことは、私は管理サイトを有効にしました。 –

+0

しかし、S3は英雄より速いかもしれません。だから悪くない。 (また、独立プロバイダのSQLをホストすることで、1分あたりの最大制限数が8倍に増える可能性があるという主張もありますので、この設定を変更しないでください) –

12

MEDIA_URLMEDIA_ROOTは、アップロードする場所、つまりお客様のモデルでFileFieldまたはImageFieldに追加されたものを指定します。

STATIC_URLSTATIC_ROOTは、collectstatic管理コマンドによって静的リソースがダンプされる場所を指定し、続いてそれらをフェッチするために使用されるURLプレフィックスを指定します。実際に手動で何かを入力することはありませんSTATIC_ROOT

あなたがアップロードのためのメディアを使用しない場合は、何か他のものに社名を変更してください。私は一般的なプロジェクトレベルの静的リソースに「資産」を使用する傾向がありますが、名前は重要ではありません(「メディア」はMEDIA_ROOTに100回中99回使用されるため、混乱します)。何を使用するにしても、完全なディレクトリパスをSTATICFILES_DIRSに追加してください。

はその後、生産にあなたはpython manage.py collectstaticを実行します。各アプリの「静的」ディレクトリ内のすべてのファイルと、STATICFILES_DIRSの各ディレクトリは、STATIC_ROOTにダンプされます。その後、あなたのウェブサーバ(Apache、nginxなど)をSTATIC_ROOTSTATIC_URLとなるように設定します。

は、Djangoの1.3では、管理者が仕事を得るために、同様ADMIN_MEDIA_PREFIXを指定する必要があります。

ADMIN_MEDIA_PREFIX = STATIC_URL + 'admin/' 

ジャンゴ1.4で、これはもはや必要ではないでしょう。しかし、それは悪夢だった、私はHerokuのから静的ファイルを提供するために管理しなかった http://www.caseypthomas.org/blog/utilizing-s3-for-a-heroku-django-app

0

あなたはそれがどこに、あなたのジャンゴインストールへのパスを計算するためにroot変数を使用する次に、あなたのsettings.py

import os.path 
root = os.path.dirname(__file__).replace('\\','/') 

に以下を追加することができます。このすべてはあなたの組み合わせたスラッグのサイズがHerokuの最大値の下にあることを前提としています。

関連する問題