Django 1.7中的多个设置文件

时间:2015-03-05 23:28:41

标签: python django django-staticfiles django-settings django-1.7

我试图将我的django 1.7项目更改为包含一个包含多个设置文件的设置文件夹,而不仅仅是一个settings.py文件。 我不知道如何正确配置静态文件的位置。我错过了什么?我的网站不再正常运行。

dev_settings.py

from unipath import Path

PROJECT_DIR = Path(__file__).ancestor(3)
MEDIA_ROOT = PROJECT_DIR.child("media")
STATIC_ROOT = PROJECT_DIR.child("static")
STATICFILES_DIRS = (
    PROJECT_DIR.child("static"),
)
TEMPLATE_DIRS = (
    PROJECT_DIR.child("templates"),
)
STATIC_URL = '/static/'

home.html的

{% load static from staticfiles %}
<a href="{% url 'bank:bank_home' %}"><img src="{% static 'images/logo-bank.png' %}" class="img-responsive navlogo" alt="My Bank"></a>
<script src="{% static 'js/bootstrap_js/bootstrap.min.js' %}"></script>

4 个答案:

答案 0 :(得分:1)

与静态文件相关的重要设置如下:

  • STATIC_ROOT - 定义collectstatic管理命令聚合静态文件的完整路径(例如 / var / www / project / staticfiles / )。< / LI>
  • STATIC_URL - 定义Django将在您的模板中替换上述路径的URL,以免您需要对其进行硬编码(通常为 / static /
  • STATICFILES_DIRS - 一个元组或文件路径列表,供Django汇总文件,与任何特定应用无关(默认情况下,Django会自动查找并汇总static下的所有文件任何已安装应用的目录 - 有关详细信息,请参阅STATICFILES_FINDERS。请注意,这不应包括STATIC_ROOT定义的路径;该路径用于Django复制文件以便为其提供服务的地方。

其他设置默认值通常可以正常开始(Django 1.7的文档是here)。请确保在python manage.py collectstatic之前运行python manage.py runserver,以便将静态文件聚合到STATIC_ROOT定义的位置。

您可以通过更改manage.py中的以下行来设置项目设置文件的位置:

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "my.project.base_settings")

或者,如果你想使用另一个(在dev等中),你可以在--settings运行manage.py时传递:

python manage.py runserver --settings=my.project.dev_settings

请注意,使用的点符号对应于项目目录结构中相对于manage.py的* .py文件。因此,上述第一个示例中文件的位置将为my/project/base_settings.pydocs中有更多详细信息。

答案 1 :(得分:0)

查看正在运行的Django实现并进行比较以找出您的错误可能会有所帮助。 这是一个包含多个设置文件的简单Django项目: https://github.com/marcofucci/cookiecutter-simple-django

(它是一个cookiecutter项目,可能对您有用 - 如果不是忽略它并在{{cookiecutter-repo-name}}中查找实际的django源代码)

另外,我推荐Django&#34;&#34;两个Scoops of Django&#34;。只是在几天前把它拿起来,爱它!

答案 2 :(得分:0)

我仍然不确定为什么我的设置不起作用。但是,为了解决这个问题,我使用https://github.com/marcofucci/cookiecutter-simple-django

创建了一个全新的项目

答案 3 :(得分:0)

到底出了什么问题? 您是否将它们包含在url.py文件中?

from django.conf.urls.static import static
from django.contrib.staticfiles.urls import staticfiles_urlpatterns

urlpatterns = patterns('',
                       url(r'^admin/', include(admin.site.urls)),
                       ) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += staticfiles_urlpatterns()