更改django的默认静态目录

时间:2014-08-29 11:34:18

标签: python django html5boilerplate

我遇到了Django 1.6的问题:

我想更改django中的默认静态文件目录。我不想要它 project/myapp/static但在project/static

我读了django的文档,添加了

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

在我的settings.py

然后我运行./manage.py collectstatic并按预期复制文件。

最后我启动了服务器,应用程序正在使用django样板插件,所以我的模板以:

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

Css不会加载:但是在我的服务器日志中,我得到了:

[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

正如您所见,来自dh5bp(Boiler plate插件)的静态文件已正确加载,而我的应用程序中的静态文件未正确加载。

我尝试将+ static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)添加到我的urls.py,就在urlpatterns之后,它没有用。

所以,如果有人可以告诉我聊天我做得很糟糕,我应该在设置中做些什么改变。这可能很棒

编辑:

尝试了解决方案here,它给了我相同的结果:只加载来自样板的静态。

更何况我显然已经检查过/ project / static中是否存在文件,它们确实存在。

编辑2:

我试图将旧的静态文件夹放在我的应用程序中,以确保他没有在旧文件夹中查找文件。它没有,所以我不知道django期望那些文件在哪里?是否有调试设置可以帮助解决这个问题?

1 个答案:

答案 0 :(得分:3)

STATIC_ROOT STATICFILES_DIRS不应该在STATICFILES_DIRS STATIC_ROOT应包含项目静态文件的路径 collectstatic是运行STATICFILES_DIRS时收集所有静态文件的位置。

如果使用DEBUG = True运行django服务器,则服务器将直接以--insecure形式提供静态文件,如果DEBUG = False,则根本不会处理静态文件。在这种情况下,您可以使用选项{{1}}运行django服务器。

有关详情,请参阅此related question