2017-06-14 4 views
1

私は現在2種類のファイルを静的ファイルとメディアファイルにしています。静的ファイルには、私のCSS、メディアファイルには、ユーザーがアップロードするものが含まれています。静的フォルダは、メディアフォルダのすぐ隣にあります。 DEBUG = Falseを設定すると、静的なファイルが表示されますが、メディアコンテンツは表示されません。 404 not foundエラーが発生します。 私の不満は、DEBUG = Falseの場合、プロダクション環境でメディアコンテンツを表示する方法です。 DEBUG = Trueではすべてがうまくいくようですか?私は以下のpageを読んで、これらのことを試しました。Djangoのメディアファイルは、生産時にDebug = Falseで表示されません - Django 1.10

1静的コンテンツと同じように静的メディアのための別個のフォルダを作成しようとしました。 現在、私の静的コンテンツはcollectstaticコマンドで管理されています。私はを実行したときにstatic_contentと呼ばれる静的フォルダを持っています。静的フォルダ内のすべてのコンテンツはstatic_contentフォルダにコピーされました。static_mediaという別の静的フォルダを作成しようとしました。しかし、./manage.py collectstaticを実行したとき、私のmediaフォルダの内容はstatic_contentにコピーされていて、それはstatic_mediaにコピーされているはずです。だれでもcollectstaticコマンドがコンテンツをstatic_mediaに貼り付けなかった理由を教えてもらえますか?

これは、これは私のurls.pyが、私はちょうど私のメディアコンテンツを管理するための別のフォルダを作成し、正しいアプローチを使用しています

admin.autodiscover() 
urlpatterns = [ 
.... 
]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 

のように見えるものである

ALLOWED_HOSTS = [ 
    "*", 
    'mywebsite.com', 
    'www.mywebsite.com.com', 
] 


STATIC_URL = 'http://mywebsite.com.com/static/' 
STATIC_ROOT = '/home/admin/webapps/static_content' 
STATICFILES_DIRS = (
         '/home/admin/webapps/mainfolder/mainapp/static', 
         '/home/admin/webapps/mainfolder/mainapp/media', 
        ) 
PROJECT_PATH = os.path.join(BASE_DIR, 'static') 

MEDIA_URL = 'http://mywebsite.com.com/media/' 
MEDIA_ROOT = '/home/admin/webapps/static_media' 

ように私の設定が見えるものですDEBUG = Falseのときの静的コンテンツのようなものですか?もしそうなら、どうしてcollectstaticコマンドは私のメディアコンテンツを static_mediaフォルダの代わりに static_contentフォルダにダンプするのですか?また、ユーザーがデータをアップロードするときにメディアコンテンツを管理するために静的フォルダを使用する場合、アップロード先は mediaまたは static_mediaになります。

+0

Django 1.7+では 'admin.autodiscover()'は必要ありませんので注意してください。 – Alasdair

+0

ありがとうございます。私が使用していたDjangoのバージョンについて言及するためにgorgotのように見えます。私はちょうどそれを追加した。 – MistyD

答えて

3

メディアディレクトリにcollectstaticを使用しないでください。あなたはこれをやったら

MEDIA_ROOT = '/home/admin/webapps/mainfolder/mainapp/media' 

を設定するとDEBUG = Truestatic(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)は、メディアファイルを提供する必要があり、その後、STATICFILES_DIRSから'/home/admin/webapps/mainfolder/mainapp/media'を削除します。

DEBUG = Falseの場合、メディアファイルを提供するにはconfigure Apacheにする必要があります。

+0

私はすでにDEBUG = Trueのために働いているメディアファイルを持っています。私は病気がapacheを設定しなければならないと思う。 – MistyD

+0

"DEBUG = Trueに設定した場合、静的ファイルは正常に表示されますが、メディアコンテンツは表示されません"という質問にはうまくいきませんでした。 – Alasdair

+0

ああ、ありがとう。私はただそれを修正した。私はhttd.confをどのように設定できるのか把握しようとしています。デプロイメントサーバでapache2 confを見つけることができません – MistyD

関連する問題