Servir archivos estáticos en depuración usando Django 1.4 es muy frustrante
-
11-12-2019 - |
Pregunta
Me encanta Django, pero obtener archivos estáticos en desarrollo es extremadamente complicado.He instalado webassets para facilitar el trabajo.Básicamente, mis activos funcionan con 404 con mi configuración actual, pero los activos de administración están bien (?!).El diseño de mi proyecto es así;
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
En mis ajustes tengo configurados los siguientes valores
__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/'
Mis URL están configuradas así;
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()
Nuevamente, activos.py parece bastante estándar;
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)
Y mi plantilla base es muy básica;
{% load assets %}
{% assets 'js' %}
<script type="text/javascript" src="{{ ASSET_URL }}"></script>
{% endassets %}
Entonces, cuando se ejecuta RunServer, todos los archivos js se agrupan en 1 etiqueta con la siguiente URL http://localhost:8000/static/bootstrap/script.js?ed501ad2
.Pero este 404 con el mensaje "'bootstrap/script.js' no se pudo encontrar".
Sin embargo, si inicio sesión en la aplicación /admin, todos los recursos CSS se representan correctamente.Ejecuté Collectstatic y verifiqué que los activos realmente se encuentran dentro public/
directorio.
¿Que me estoy perdiendo aqui?
Solución
Agregaste django_assets.finders.AssetsFinder
para usted STATICFILES_FINDERS
como se requiere en el documento de django-assets?