我喜欢Django但是在开发过程中获取静态文件非常痛苦。我已经安装了webassets以使工作更轻松。基本上,我的资产是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/'
我的网址配置如下;
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文件都捆绑到1个标记中,并带有以下url http://localhost:8000/static/bootstrap/script.js?ed501ad2
。但这个404的消息“'bootstrap / script.js'找不到”。
但是,如果我登录/ admin应用程序,那么所有css资产都会正确呈现。我运行了collectstatic并验证资产确实存在于public/
目录中。
我在这里缺少什么?
答案 0 :(得分:3)
您是否按照django-assets文件中的要求将django_assets.finders.AssetsFinder
添加到STATICFILES_FINDERS
?