0

単純なDjangoプロジェクトを作成していますが、ページに表示する画像を取得できません。

https://docs.djangoproject.com/en/1.3/howto/static-files/#basic-usage状態のDjangoドキュメント

基本的な使用法静的ファイルが見つかる場所に静的ファイルを置きます。

デフォルトでは、これはINSTALLED_APPS内のアプリの静的/サブディレクトリ内を意味します。

プロジェクトには、特定のアプリに関連付けられていない静的アセットも含まれている可能性があります。STATICFILES_DIRS設定は、静的ファイルをロードするときにチェックするファイルシステムディレクトリのタプルです。これは、デフォルトで空の検索パスです。この追加パスのリストを拡張する方法については、STATICFILES_DIRSドキュメントを参照してください。

さらに、staticfilesがファイルを検索する方法の詳細については、STATICFILES_FINDERS設定のドキュメントを参照してください。

django.contrib.staticfilesがINSTALLED_APPSに含まれていることを確認してください。

ローカル開発の場合、runserverを使用するか、URLconfにstaticfiles_urlpatternsを追加すると、セットアップは完了です。静的ファイルは、デフォルト(新しく作成されたプロジェクトの場合)の/static/のSTATIC_URLで自動的に提供されます。

テンプレートでこれらのファイルを参照する必要があるでしょう。最も簡単な方法は、次のようなテンプレートコードを許可する付属のコンテキストプロセッサを使用することです。

テンプレートタグを使用する別の方法など、詳細については、テンプレート内の静的ファイルの参照を参照してください。

だから私はsettings.pyでこれを行いました:

STATICFILES_DIRS = (
    '/home/abc/django/project1/media/',
)

メディアには、さまざまなjpg'django.contrib.staticfiles', ファイルを含むimgフォルダーがあります。

私のテンプレートでは、これを次の行の1つとして使用しています。

<img src="{{STATIC_URL}}img/{{var}}.jpg">

ビューを介してこのテンプレートにvarを渡すとき。

"<img src="img/abc.jpg">HTMLページは、このタグをwhere var="abc"としてレンダリングしているようです。しかし、私のブラウザは画像の表示を拒否します。私は何を間違えましたか?

4

2 に答える 2

3

ドキュメントのこの部分を見ましたか:

テンプレートで機能しない場合{{ STATIC_URL }}は、テンプレートをレンダリングするときに RequestContext を使用していない可能性があります。

ビューで RequestContext も使用してテンプレートをレンダリングしますか?

于 2012-07-01T14:27:35.550 に答える
0

別のアプローチを次に示します。

settings.py:

import os
PROJECT_DIR = os.path.dirname(__file__) + '/../'
STATIC_ROOT = os.path.join(PROJECT_DIR, 'media/')
STATIC_URL = '/media/'

あなたのテンプレートで:

{% load staticfiles %}
<img src="{% static img/foo.jpg %}" />

変数を渡す必要がある場合は、prefix メソッドを使用します。

{% load staticfiles %}
<img src="{% get_static_prefix %}img/{{var}}.jpg" />
于 2012-07-01T14:33:58.223 に答える