3

静的ディレクトリから CSS をロードする際に問題があります。

設定.py

MEDIA_ROOT = '/he/sites/video1.hackedexistence.com/htdocs/media/'  
MEDIA_URL = '/media/'  

STATIC_ROOT = '/he/sites/video1.hackedexistence.com/htdocs/static/'  
STATIC_URL = '/static/'  

ADMIN_MEDIA_PREFIX = '/static/admin/'  

STATICFILES_DIRS = ()

url.py

from django.conf.urls.defaults import patterns, include, url  
from django.contrib import admin  
admin.autodiscover()

urlpatterns = patterns('',

    url(r'^admin/', include(admin.site.urls)),

    r'^beers/$', 'beer.views.BeersAll'),  
)

base.html は正常に読み込まれますが、css は読み込まれません

<link rel="stylesheet" type="text/css" href="/static/css/video1.css" />

css href リンクはにつながります

Page not found (404)
    'css/video1.css' could not be found

css ファイルへのフル パス:

/he/sites/video1.hackedexistence.com/htdocs/static/css/video1.css

Hacked Existence による youtube django チュートリアルに従っています。彼はこの設定で問題なく進めているようです。どうすればこれを修正できますか?

4

2 に答える 2

2

Hacked Existence はおそらく、静的ファイルを提供するように構成された Web サーバー (最後の質問に基づく apache) を持っています。

user1658078 は、何らかの方法で静的ファイルを提供する必要があるという点で正しいです。開発環境では、django の組み込みビューを使用できます。django.contrib.staticfiles.views.serve(request, path)このビューは、設定されたパスと各アプリケーション内STATICFILES_DIRSstaticサブディレクトリを調べるだけです (たとえば、あなたのプロジェクトが呼び出され、 という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 プロジェクト ディレクトリ内に次のディレクトリを作成します。

  1. /media/- これは、ユーザーがアップロードしたファイルが保存される場所です(例: FileFieldまたはImageField経由) 。
  2. /static/- これは、django プロジェクト全体に適用される静的ファイルを配置できる場所です (たとえば、ページ全体のスタイル)。たとえば、この構成でvideo1.cssurlの css ファイルにアクセスしようとしている場合static/css/video1.css、ファイルが次のパスにあることを確認します。/static/css/video1.css
  3. /templates/- これは、django プロジェクト全体に適用されるテンプレートを配置する場所です
  4. /beer/static/- これは、1 つの特定のサイトにのみ適用される静的ファイルを配置する場所です。ここにファイルへの URL を作成すると、それらがディレクトリ内にあるかのように扱われるため、相対ファイル名/static/の前に の値を追加するだけです。STATIC_URL
  5. /beer/templates/- ビューのテンプレートの作成を開始する必要がある場合は、テンプレートをここに配置します (TEMPLATE_LOADERS設定にはdjango.template.loaders.app_directories.Loaderデフォルトで含まれており、このディレクトリでテンプレートが検索されます)。アプリケーション固有の静的ディレクトリと同様に、このディレクトリ内のファイルを通常の/templates/ディレクトリ内にあるかのように扱います。
  6. /static-serve/- これは開発中には使用されません (したがって、今はあまり心配する必要はありません) が、最終的に django アプリケーションをデプロイする場合は、 ./manage.py collectstatic を実行します。これにより、django はそれぞれからすべてのファイルをコピーします。アプリケーションディレクトリのディレクトリをここに配置してから、URL が(この場合)staticの値で始まるときに、このディレクトリからファイルを提供するように Web サーバーを構成します。STATIC_URL/static/

これで、静的ファイルが適切に読み込まれ、管理画面が適切に表示され、ユーザーがアップロードしたファイルが適切に提供され、必要なときにテンプレートが適切に検出されるようになります。

于 2012-10-12T02:39:20.397 に答える
1

静的ファイルを提供する必要があると思います。これを行う方法については、Django のドキュメントに記載されています。 https://docs.djangoproject.com/en/dev/howto/static-files/ 開発とデプロイでは異なる手順があることに注意してください。

于 2012-10-11T22:59:26.137 に答える