2

私はdjango 1.1で新しいプロジェクトを作成するのをやめました.その時から、すでに作成されたアプリケーションでのみ作業していました. それ以来、静的サービングが何らかの形で変更されたと思います(プロジェクトは Django 1.2.4 を使用しています)。私は数時間苦労していますが、結果はありません。誰かが私が間違っていることを知っているなら、私に知らせてください.

私の設定 :

PROJECT_PATH = os.path.realpath(os.path.dirname(__file__))
MEDIA_ROOT = os.path.join(PROJECT_PATH, 'media')
MEDIA_URL = '/static/'
ADMIN_MEDIA_PREFIX = '/media/'

SECRET_KEY = '(d9bahjuyy_i-)4b(w9gc5a&s&5jemcn7&b^wrbuemah3p-6^#'

TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.Loader',
    'django.template.loaders.app_directories.Loader',
#     'django.template.loaders.eggs.Loader',
)

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
)

TEMPLATE_DIRS = (
    os.path.join(PROJECT_PATH, 'templates'),
)

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.admin',
    'django.contrib.admindocs',
    'project',
)

TEMPLATE_CONTEXT_PROCESSORS = (
    "django.core.context_processors.auth",
    "django.core.context_processors.request",
    "django.core.context_processors.media",
    "django.core.context_processors.csrf",
    "django.core.context_processors.i18n",
)

URL:

urlpatterns += patterns('',
    (r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT, 'show_indexes' : True}),
)

メディア ファイルは ../project_path/media にあります。

テンプレートで、{{ MEDIA_URL }} パスを /static/ として取得しますが、ファイルが読み込まれません。http://127.0.0.1:8000/static/ (最後のスラッシュの有無にかかわらず) に移動すると、ルート ページが表示されます。Firebug は、javascript ファイルの代わりにページの html コードを表示します。むしろ 404 エラーが発生することを期待します。問題はどこですか?


1.3 に切り替えました。問題が残ります。

4

2 に答える 2

7

render_to_response を使用している場合は、オプションの 3 番目のパラメーターを渡す必要があります。

context_instance=RequestContext(request)

完全なコードは次のようになります。

return render_to_response('index.html',{'dict':'ionary'},context_instance=RequestContext(request))

{{ STATIC_URL }} は RequestContext で動作しますが、render_to_response のデフォルトは Context です

于 2011-12-31T00:14:23.130 に答える
3

Django の 1.3 を使用している場合、アプリは、インストールされているすべてのアプリのサブフォルダーのdjango.contrib.staticfiles下にある静的ファイルを探します。staticたとえばstaticfiles、次の css を自動的に取得します。

yourproject/
    appone/
        static/
            sample.css

django.contrib.staticfilesで と を使用しSTATIC_URL = '/static/'ている場合はsettings.py、次の場所で css に簡単にアクセスできます。

http://localhost:8000/static/sample.css

あなたの場合、プロジェクト フォルダーの下に static フォルダーがあるように見えます。次のように仮定します。

yourproject/
    static/

上記を選択する場合はstaticfiles、 から次を削除しますurls.py

(r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT, 'show_indexes' : True}),

以下を に追加しますsettings.py

import os
SITE_ROOT = os.path.realpath(os.path.dirname(__file__))

STATICFILES_DIRS = (
    os.path.join(SITE_ROOT, 'static'),
)

テンプレートでは、両方が同じ値を指していない限り、STATIC_URL代わりに使用を開始したい場合があります。MEDIA_URL

Django 1.3 の静的ファイルについて詳しく読むことができます。

于 2011-05-09T01:10:17.180 に答える