私はDjangoが大好きですが、静的ファイルを開発で提供するのは非常に困難です。作業を簡単にするためにWebアセットをインストールしました。基本的に、私のアセットは現在の構成で404になっていますが、管理者アセットは問題ありません(?!)。私のプロジェクトのレイアウトは次のようになっています。
myapp/
common/
static/
bootstrap/
img/
less/
js/
templates/
__init__.py
assets.py
urls.py
models.py
views.py
projects/
templates/
static/
__init__.py
assets.py
urls.py
models.py
views.py
public/ <- (static files collected here)
settings.py
私の設定では、次の値を構成しています
__DIR__ = os.path.abspath(os.path.dirname(__file__))
MEDIA_ROOT = os.path.join(__DIR__, 'media')
MEDIA_URL = '/media/'
STATIC_ROOT = os.path.join(__DIR__, 'public')
STATIC_URL = '/static/'
私のURLは次のように構成されています。
urlpatterns = patterns('',
url(r'^projects/', include('myapp.projects.urls')),
url(r'^admin/', include(admin.site.urls)),
url(r'^$', include('myapp.common.urls')),
)
urlpatterns += staticfiles_urlpatterns()
繰り返しますが、assets.pyはかなり標準的に見えます。
from django_assets import register, Bundle
js = Bundle(
'bootstrap/js/bootstrap-alert.js',
'bootstrap/js/bootstrap-button.js',
'bootstrap/js/bootstrap-carousel.js',
'bootstrap/js/bootstrap-collapse.js',
'bootstrap/js/bootstrap-modal.js',
'bootstrap/js/bootstrap-popover.js',
'bootstrap/js/bootstrap-scrollspy.js',
'bootstrap/js/bootstrap-tab.js',
'bootstrap/js/bootstrap-tooltip.js',
'bootstrap/js/bootstrap-transition.js',
'bootstrap/js/bootstrap-typeahead.js',
output='bootstrap/script.js',
debug=False
)
register('js', js)
そして、私の基本テンプレートは非常に基本的です。
{% load assets %}
{% assets 'js' %}
<script type="text/javascript" src="{{ ASSET_URL }}"></script>
{% endassets %}
したがって、runserverの実行中は、すべてのjsファイルが次のURLで1つのタグにバンドルされますhttp://localhost:8000/static/bootstrap/script.js?ed501ad2
。しかし、この404には、「'bootstrap/script.js'が見つかりませんでした」というメッセージが表示されます。
ただし、/ adminアプリにログインすると、すべてのcssアセットが正しくレンダリングされます。collectstaticを実行し、アセットが実際にpublic/
ディレクトリ内に存在することを確認しました。
ここで何が欠けていますか?