Hacked Existence はおそらく、静的ファイルを提供するように構成された Web サーバー (最後の質問に基づく apache) を持っています。
user1658078 は、何らかの方法で静的ファイルを提供する必要があるという点で正しいです。開発環境では、django の組み込みビューを使用できます。django.contrib.staticfiles.views.serve(request, path)
このビューは、設定されたパスと各アプリケーション内STATICFILES_DIRS
のstatic
サブディレクトリを調べるだけです (たとえば、あなたのプロジェクトが呼び出され、 というmysite
名前のアプリケーションがある場合、 )blog
を調べmysite/blog/static/
、 URL の の値の後の部分に一致するファイルを提供しますsettings.STATIC_URL
。
最後に、MEDIA_ROOT および STATIC_ROOT ディレクトリが のサブディレクトリからサービスを提供するように設定されているため、現時点では設定がまったく機能しないことを指摘する価値があり/he/sites/video1.hackedexistence.com/htdocs/
ます。このディレクトリを作成しない限り、まったく機能しません。
静的ファイル、テンプレート、管理ファイル、およびアップロードされたファイルを修正するには、次の手順に従います。
settings.py
で、質問の行を次のように置き換えます。
import os
PROJECT_DIR = os.path.dirname(__file__)
INSTALLED_APPS = (
'django.contrib.staticfiles',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.admin',
# 'django.contrib.admindocs',
'beer', # note - I'm guessing the name of your application is beer
)
# django.contrib.staticfiles app collects files here when we run the collectstatic command
# (depending on your web server config, you may want to change this to e.g. '/var/www/static/' when it comes to deployment)
STATIC_ROOT = os.path.join(PROJECT_DIR, 'static-serve').replace('\\', '/')
# this should be prepended to your urls for static resources
STATIC_URL = '/static/'
# you can put static files which apply to your entire project here
STATICFILES_DIRS = (
os.path.join(PROJECT_DIR, "static").replace('\\', '/'),
)
# the URL to where we have the admin media (static files) from a web browser's perspective (not needed if using Django 1.4 or greater)
ADMIN_MEDIA_PREFIX = STATIC_URL + 'admin/'
# should be different from static files dir - this is where uploaded stuff goes
# (depending on your web server config, you may want to change this to e.g. '/var/www/media/' when it comes to deployment)
MEDIA_ROOT = os.path.join(PROJECT_DIR, 'media').replace('\\', '/')
# if you need to serve the uploaded stuff again, you need to prefix your urls with this
MEDIA_URL = '/media/'
# you can put templates which apply to your entire project here
TEMPLATE_DIRS = (
os.path.join(PROJECT_DIR, "templates").replace('\\', '/'),
)
DEBUG
が に設定されていることも確認してTrue
ください。
django プロジェクト内の urls.py (つまり、の app ディレクトリ内ではないbeer
) で、最後に次を追加します。
from django.conf.urls.static import static
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
# serving of uploaded media + static files while debug mode is on
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) # uploaded media
urlpatterns += staticfiles_urlpatterns() # files in each app's static/ dir
django プロジェクト ディレクトリ内に次のディレクトリを作成します。
/media/
- これは、ユーザーがアップロードしたファイルが保存される場所です(例: FileFieldまたはImageField経由) 。
/static/
- これは、django プロジェクト全体に適用される静的ファイルを配置できる場所です (たとえば、ページ全体のスタイル)。たとえば、この構成でvideo1.css
urlの css ファイルにアクセスしようとしている場合static/css/video1.css
、ファイルが次のパスにあることを確認します。/static/css/video1.css
/templates/
- これは、django プロジェクト全体に適用されるテンプレートを配置する場所です
/beer/static/
- これは、1 つの特定のサイトにのみ適用される静的ファイルを配置する場所です。ここにファイルへの URL を作成すると、それらがディレクトリ内にあるかのように扱われるため、相対ファイル名/static/
の前に の値を追加するだけです。STATIC_URL
/beer/templates/
- ビューのテンプレートの作成を開始する必要がある場合は、テンプレートをここに配置します (TEMPLATE_LOADERS
設定にはdjango.template.loaders.app_directories.Loader
デフォルトで含まれており、このディレクトリでテンプレートが検索されます)。アプリケーション固有の静的ディレクトリと同様に、このディレクトリ内のファイルを通常の/templates/
ディレクトリ内にあるかのように扱います。
/static-serve/
- これは開発中には使用されません (したがって、今はあまり心配する必要はありません) が、最終的に django アプリケーションをデプロイする場合は、 ./manage.py collectstatic を実行します。これにより、django はそれぞれからすべてのファイルをコピーします。アプリケーションディレクトリのディレクトリをここに配置してから、URL が(この場合)static
の値で始まるときに、このディレクトリからファイルを提供するように Web サーバーを構成します。STATIC_URL
/static/
これで、静的ファイルが適切に読み込まれ、管理画面が適切に表示され、ユーザーがアップロードしたファイルが適切に提供され、必要なときにテンプレートが適切に検出されるようになります。