開発サーバーを使用して、django-skel 1.4でセットアップされた Django プロジェクトを提供しようとしています。私のサイトは画像を除いて期待どおりに動作しますが、画像は提供されません。
一部のtemplates/home.html
<img width="65px;" src="assets/img/pic.png" alt="" id="symbol" />
この部分で何かを変更する必要があると思います: src="assets/img/pic.png"
. 私はSOスレッドを見回し、与えられた答えに従って微調整しましたが、うまく機能させることができませんでした。
では、テンプレートに画像を適切に設定するにはどうすればよいでしょうか?
その他の関連情報:
settings.common.py
DJANGO_ROOT = dirname(dirname(abspath(__file__)))
MEDIA_ROOT = normpath(join(DJANGO_ROOT, 'media'))
MEDIA_URL = '/media/'
STATIC_ROOT = normpath(join(DJANGO_ROOT, 'static'))
STATIC_URL = '/static/'
STATICFILES_DIRS = (
normpath(join(DJANGO_ROOT, 'assets')),
)
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
'compressor.finders.CompressorFinder',
)
プロジェクトのツリー
.
├── apps
│ └── __init__.py
├── assets
│ ├── css
│ │ └── base.css
│ ├── img
│ │ └── pic.png
│ └── js
├── default.db
├── __init__.py
├── libs
│ ├── core
│ │ ├── admin.py
│ │ ├── __init__.py
│ │ ├── models.py
│ │ ├── views.py
│ │ └── views.pyc
│ └── __init__.py
├── settings
│ ├── common.py
│ ├── dev.py
│ ├── __init__.py
│ └── prod.py
├── templates
│ ├── 404.html
│ ├── 500.html
│ ├── home.html
│ └── install.html
└── urls.py
ところで: を使用したソリューションは使用しないでください。if settings.DEBUG
可能であれば、適応する必要はありませんurls.py
。
編集
実行後の最上位ディレクトリのツリーcollectstatic
.
├── fabfile.py
├── gunicorn.py.ini
├── manage.py
├── Procfile
├── project_name
│ ├── apps
│ │ └── __init__.py
│ ├── assets
│ │ ├── css
│ │ │ └── base.css
│ │ ├── img
│ │ │ └── pic.png
│ │ └── js
│ ├── default.db
│ ├── __init__.py
│ ├── libs
│ │ ├── core
│ │ │ ├── admin.py
│ │ │ ├── __init__.py
│ │ │ ├── models.py
│ │ │ └── views.py
│ │ └── __init__.py
│ ├── settings
│ │ ├── common.py
│ │ ├── dev.py
│ │ ├── __init__.py
│ │ └── prod.py
│ ├── static
│ │ │ └── js
│ │ ├── css
│ │ │ └── base.css
│ │ └── img
│ │ └── pic.png
│ ├── templates
│ │ ├── 404.html
│ │ ├── 500.html
│ │ ├── home.html
│ │ └── install.html
│ └── urls.py
├── README.md
├── reqs
│ ├── common.txt
│ ├── dev.txt
│ └── prod.txt
├── requirements.txt
└── wsgi.py
編集 2
Django がパスを読み取る方法を理解しています: Let src="static/img/pic.png"
、 from my settings.common.py
:
>>> DJANGO_ROOT
'/home/my_username/web/my_project/my_project'
>>> j = os.path.join(DJANGO_ROOT, 'static/')
>>> print j
/home/my_username/web/my_project/my_project/static
しかし
>>> STATIC_URL
'/static/'
>>> j = os.path.join(DJANGO_ROOT, STATIC_URL)
>>> print j
/static/
したがって、Djangoがおそらくどこかでそれが機能os.path.join
する理由を考えることができる唯一の理由ですが、そうで
src="static/img/pic.png"
はsrc="{{STATIC_URL}}img/pic.png"
ありません。しかし、なぜこれは明らかに他の人には機能するのに、私には機能しないのでしょうか?