0

Djangoテンプレート画像について多くの既存の質問があることは理解していますが、私は自分の画像を機能させることができないようです。現在、プロジェクト内にアプリがあり、次のような静的フォルダー構造があります

    djangoproject/appname/static/images/ 

同じdjangoアプリのtemplatesフォルダーに、上記のフォルダー内の画像を参照する必要のあるさまざまなHTMLファイルがあります。私のsettings.pyフォルダには、

    STATIC_ROOT=''
    STATIC_URL = 'appname/static/' 
    STATICFILES_DIRS = ( 
    ) 
    TEMPLATE_CONTEXT_PROCESSORS = (
'django.core.context_processors.debug',
'django.core.context_processors.i18n',
'django.core.context_processors.media',
'django.core.context_processors.static',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',

)。

テンプレートファイルには、

    <a href="AddTransaction.html"><img id="btnTransaction" src="{{ STATIC_URL }}images/btnTransaction.png"/></a>

開発サーバーを実行するappname/images/btnTransaction.pngと、イメージを探し続けます。

どうすればこれを修正できますか?

4

4 に答える 4

1

タプルには、マシンの静的ディレクトリへの絶対パスSTATIC_FILES_DIRである文字列が必要です。したがって、* nixの場合は、Windowsを使用している場合になります。'/User/path/to/django/static/dir/''C:/path/to/django/static/dir/'

STATIC_URL、ここに表示されているように、HTMLで出力されるものはすべて、ブラウザを基準にした画像の絶対パスを意味します。'http://127.0.0.1:8000/static/'ローカルで実行している'http://mydomain.com/static/'場合や、本番 環境で実行し'http://static.mydomain.com/static/'ている場合、CDNを使用している場合、または'/static/'すべてのユーザーに対して機能する場合(静的ファイルとアプリに同じホストを使用している場合)などに実行できます。

于 2012-05-09T03:11:17.507 に答える
1

画像へのパスを、djangoやアプリから離れたWebアクセス可能な場所に配置する必要があります(アクセスコントロールを追加する場合を除き、ビューに別の関数を追加して処理する必要があります)。つまり、テンプレートがサーバー側でレンダリングされるとき、imgタグのsrcは画像をプルしませんが、クライアントとクライアントは画像に対して個別のリクエストを行います。URLで画像が見つからない場合、画像は表示されません。

于 2012-05-09T03:11:52.130 に答える
1

appnameを削除し、に変更しますSTATIC_URL= '/static/'

于 2012-05-09T05:29:03.293 に答える
0

「静的」を使用する代わりに「メディア」を使用する

そのようです

settings.py

# Absolute filesystem path to the directory that will hold user-uploaded files.
# Example: "/home/media/media.lawrence.com/media/"
MEDIA_ROOT = '/Users/YOUR USERNAME/djcode/blankpage/media/'

# URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash.
# Examples: "http://media.lawrence.com/media/", "http://example.com/media/"
MEDIA_URL = '/media/'

とurls.pyで

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

テンプレートで、このようにファイルを参照します

href="/media/styles/profile.css"
于 2012-05-09T15:28:26.013 に答える