2016-03-23 7 views
0

こんにちは静的ファイルを設定するのは非常に混乱しています。私が何を試しても、すべてのことがうまく動作します(画像、javascript、CSS)。だから私はどちらが正しいか混乱している。正しい静的ファイル設定

現在のところ、これは私のプロジェクトは

project 
--project 
---------static 
---------media 
--env 
--static 
--------media 
--------static 

のように見え、これは私のコード

MEDIA_URL = '/media/' 
MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), "static", "media") 

STATIC_URL = '/static/' 
STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),) 
STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), "static", "static") 
# List of finder classes that know how to find static files in 
# various locations. 
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder', 
    'django.contrib.staticfiles.finders.AppDirectoriesFinder', 
# 'django.contrib.staticfiles.finders.DefaultStorageFinder', 
) 

私はmanage.py collectstaticをPYTHON行うと、私はエラーを取得しますが、静的ではないんです方法です静的な外部フォルダにあるフォルダには何も含まれていません。静的フォルダにあるメディアフォルダには、プロジェクトフォルダにあるメディアフォルダ内のファイルが含まれています。

はまた、私は

AWS_FILE_EXPIRE = 200 
AWS_PRELOAD_METADATA = True 
AWS_QUERYSTRING_AUTH = True 

DEFAULT_FILE_STORAGE = 'project.utils.MediaRootS3BotoStorage' 
STATICFILES_STORAGE = 'project.utils.StaticRootS3BotoStorage' 
AWS_STORAGE_BUCKET_NAME = 'realproject' 
S3DIRECT_REGION = 'ap-northeast-2' 
S3_URL = '//%s.s3.amazonaws.com/' % AWS_STORAGE_BUCKET_NAME 
MEDIA_URL = '//%s.s3.amazonaws.com/media/' % AWS_STORAGE_BUCKET_NAME 
MEDIA_ROOT = MEDIA_URL 
STATIC_URL = S3_URL + 'static/' 
ADMIN_MEDIA_PREFIX = STATIC_URL + 'admin/' 

import datetime 

date_two_months_later = datetime.date.today() + datetime.timedelta(2 * 365/12) 
expires = date_two_months_later.strftime("%A, %d %B %Y 20:00:00 GMT") 

AWS_HEADERS = { 
    'Expires': expires, 
    'Cache-Control': 'max-age=86400', 
} 

は、誰かが私に教えてくださいすることができ、私は右のそれをやっている場合は、AWSのためにこれを持って ?

ところで、私はhttps://docs.djangoproject.com/en/1.9/howto/static-files/ を読んでそれに続いて、私はそれが私が頼んでいる理由(上に表示されている)に従ったかどうかは分かりません。

答えて

0

python manage.py collectstaticコマンドはすべての静的ディレクトリを検索し、STATIC_ROOT設定で定義されたディレクトリ内のそれらのファイルを結合します。あなたのケースでは

STATIC_ROOTos.path.join(os.path.dirname(BASE_DIR), "static", "static")に設定されている、すなわち

your_project/static/static 

静的ファイルがに収集されているところだから、これはあります。外部静的ディレクトリにそれらを置きたい場合はSTATIC_ROOTos.path.join(os.path.dirname(BASE_DIR), "static")に変更できます。

優秀なDjango docs hereにこれに関する良い議論があります。

ので、ここでは、これらの設定でで取るためにかなり多くは、一例として、各静的設定の簡単な要約である:

# this is the URL that django will look for static resources at 
# - i.e. http://your_domain/static 
# so this one is a URL used when by your web server and in template 
# shortcuts. 
STATIC_URL = '/static/' 

# this is where Django will look for static files to collect. 
# I.e. the search locations that collectstatic uses. 
# 'my_project/static' in this instance. You need to add the places 
# you write your static files to this directory. For example, if you 
# have several places where you are writing css files, add their 
# container directories to this setting. 
# it is a list of places to look for static files. 
STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),) 

# this is where collectstatic will collect the static files to. 
# When you hook this all into your webserver, you would tell your 
# webserver that the /static/ url maps to this directory so that 
# your app can find the static content. It's a directory in your 
# project usually. 
# it's a single directory where the static files are collected together. 
STATIC_ROOT 
+0

イエスは、どのように私に来る、私は混乱していた理由ですありがとうメディアファイルは、my_project/static/mediaにあるフォルダに収集されます。 –

+0

これは、MEDIA_ROOT設定が原因です(MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR)、 "static"、 "media" ) 'つまり、' my_project/static/media'です。ここでも、この設定を変更すると、その設定がどこかで終了する原因になります。 – srowland

+0

私は今分かっているので、私はこれより多くのチュートリアルを読んで、もっと混乱してしまいます。私はあなたが言ったように変更しようとしましたが、静的ファイルは静的フォルダに収集されていません。私はちょうど= '/メディア/' MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR)、 "静的"、 "メディア") MEDIA_URL STATIC_ROOT = '' ようにそれを残すつもりですSTATIC_URL = '/ static /' STATICFILES_DIRS =(os.path.join(BASE_DIR、 'static')) –

関連する問題