6

メディアは現在、私のローカル開発マシンにあります。

私のMEDIA_ROOT、MEDIA_URL、ADMIN_MEDIA_PREFIXは、次のように指定されています。

MEDIA_ROOT = os.path.join(os.path.dirname(__file__), "media")
MEDIA_URL = '/media/'
SITE_URL = 'http://localhost:80'
ADMIN_MEDIA_PREFIX = '/media/admin/'

'admin'フォルダーはありませんが、違いはないと思います。urls.pyファイルには次のものがあります。

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

私はそれを機能させるために何をすべきかについて途方に暮れています。[私はdjangoを学ぼうとしていて、かなり毛深い既存のプロジェクトで作業しています]

4

4 に答える 4

7

Django1.3の静的ファイル処理の前後で混合して一致させています。元々、すべての静的ファイルはから提供MEDIA_URLされていましたが、Django1.3ではstaticfilescontribパッケージとそれに関連するSTATIC_ROOT設定が導入されましたSTATIC_URLdjango.views.static.serveまだ設定していない新しいstaticfilesアプリを利用します。

Django 1.3を実行していると仮定すると、最初に、に「staticfiles」を追加する必要がありますINSTALLED_APPS。次に、とを定義する必要がありSTATIC_ROOTますSTATIC_URL。標準の場所は、「static」という名前のプロジェクトルートレベルのディレクトリです。

staticfilesテンプレートコンテキストプロセッサも追加する必要があります。

TEMPLATE_CONTEXT_PROCESSORS = (
    ...
    'django.core.context_processors.static',
)

これにより、STATIC_URL変数がテンプレートで使用できるようになるため、次のようなリソースを参照できます。{{ STATIC_URL }}css/style.css

すべての静的リソースは、「static」という名前のアプリレベルのディレクトリにも移動する必要があります。実際のプロジェクトルートレベルの「静的」ディレクトリが直接使用されることはありません。collectstaticこれは、管理コマンドが本番環境で使用するためにすべての静的リソースをダンプする場所です。

プロジェクト全体の静的リソース(特定のアプリに関連付けられていない)が必要な場合は、完全に別個のディレクトリが必要になります(つまり、MEDIA_ROOT または STATIC_ROOTと同じではありません)。私は「アセット」という名前のものを使用する傾向があります。STATICFILES_DIRS次に、Djangoに、静的リソースもここで調べて、次の設定を行うように指示する必要があります。

STATICFILES_DIRS = (
    os.path.join(os.path.dirname(__file__), 'assets'), # or whatever you named it
)

MEDIA_ROOT/は、ユーザーのアップロードにのみ使用されるようになりました(たとえば、 sとsMEDIA_URLを介して作成されたファイルなので、引き続き必要ですが、手動で保存することはありません。FileFieldImageField

本番環境に到達すると、WebサーバーはそれぞれMEDIA_ROOTSTATIC_ROOTatMEDIA_URLSTATIC_URLの両方にサービスを提供する必要があります。また、以下を実行する必要があります。

$ python manage.py collectstatic

Djangoにすべての静的ファイルをで指定されたディレクトリにコンパイルさせるにはSTATIC_ROOT

于 2012-02-06T22:38:32.957 に答える
7

django 1.8-1.11で動作します:

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    # ... the rest of your URLconf goes here ...
]

if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

https://docs.djangoproject.com/en/1.11/howto/static-files/#serving-files-uploaded-by-a-user-during-development

Djangoのドキュメントには、これは

実稼働用途には適していません

(もちろん、パーツを使用しない限りif settings.DEBUG:

于 2015-12-09T17:29:32.847 に答える
4

開発サーバーでは、このページが役立つ場合があります。 https://docs.djangoproject.com/en/1.2/howto/static-files/

urls.pyに次のコードを追加することにより:

if settings.DEBUG:
    urlpatterns += patterns('', 
        (r'^site_media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': '/path/to/media'}),
    )
于 2012-02-07T02:54:36.020 に答える
0

python-django1.7で使用しました

 if settings.DEBUG:
        urlpatterns = patterns('',
            (r'^$', 'blenderx3d.first_step.views.index'),
            (r'^media/(?P<path>.*)$','django.contrib.staticfiles.views.serve'),)
于 2015-03-15T23:32:19.597 に答える