Change django's default static directory

做~自己de王妃 提交于 2020-08-07 06:26:46

问题


I got an issue with Django 1.6:

I want to change the default static file directory in django. I don't want it in project/myapp/static but in project/static

I readed django's documentation, added

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR,'static')
STATICFILES_DIR =(os.path.join(BASE_DIR, 'static'),)

In my settings.py

Then I ran ./manage.py collectstatic and files copyed as expected.

Finally I launched the server, the app is using django boilerplate plugin, so my template begins with:

{% extends 'dh5bp/base.html' %}
{% load url from future %}
{% load staticfiles %}
{% block head %}
     <link rel="stylesheet" href="{% static "css/homepage.css" %}">
{% endblock %}

And the Css won't load: But in my server log, I got that:

[29/Aug/2014 11:23:03] "GET /static/js/dh5bp/plugins.js HTTP/1.1" 304 0
[29/Aug/2014 11:23:03] "GET /static/css/homepage.css HTTP/1.1" 404 1657

As you see the statics file from dh5bp (Boiler plate plugin) Are loaded correctly, while the statics from my app aren't loaded correctly.

I tried to add + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) to my urls.py, right after urlpatterns, It didn't worked.

So please if someone could tell me chat I'm doing bad and what should I change in the settings. It could be great

EDIT:

Did tryed the solution here, It give me the same result: only statics from boilerplate are loaded.

And not to mention that I've obviously checked if the files exists in /project/static, they does exists.

EDIT 2:

I tried to put the old static folder in my app, to ensure That he weren't looking for the files in the old folder. It doesn't, so I don't know where django expect those file to be? Is there a debug setup that could help on this?


回答1:


Your STATIC_ROOT shouldn't be in STATICFILES_DIRS.
STATICFILES_DIRS should contain paths to your project's static files.
STATIC_ROOT is where all your static files are collected when you run collectstatic.

If you run django server with DEBUG=True, server will serve static files straight form STATICFILES_DIRS, and if DEBUG=False it won't handle static files at all. In that case you can run django server with option --insecure.

See this related question for more.



来源:https://stackoverflow.com/questions/25567462/change-djangos-default-static-directory

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!