Django是如何在这个文件夹“/usr/local/lib/python3.6/site-packages”下找到Bootstrap文件的?

时间:2018-04-08 13:32:31

标签: python django sass bootstrap-4

我最近开始研究Django Bootstrap项目,它开始变得混乱。我安装了Django并创建了一个项目。通常,它可以正常工作,我可以从浏览器中显示应用程序。

但是,我想个性化模板并决定使用bootstrap4,这是一个非常酷的框架。我用这个命令“pip install django-bootstrap-static”安装了bootstrap。我知道我应该将我的静态文件包含在STATIC文件夹中并将其指定到settings.py,我做了,但我在第一时间找不到机器上的bootstrap4文件。

问题是,我在这个html文件中包含了库引用;

<link rel="stylesheet" href="{% static 'bootstrap/css/bootstrap.min.css' %}">
<script src="{% static 'bootstrap/js/jquery.min.js' %}"></script>
<script src="{% static 'bootstrap/js/bootstrap.min.js' %}"></script>
突然,它开始使用bootstrap,这意味着我的bootstrap元素就在那里!

但正如我所说,我没有指定引导程序文件,只有我指定的是应用程序下的STATIC文件夹。我后面找到的引导程序文件位于此文件夹“/usr/local/lib/python3.6/site-packages”下。

我想要包括SASS来个性化我的网站,但我不明白Django是如何处理这种情况的。你能告诉我这个吗?

由于

1 个答案:

答案 0 :(得分:0)

让我们先来看看Django STATICFILES_FINDERS的工作原理:

  

默认设置将查找存储在STATICFILES_DIRS设置(使用django.contrib.staticfiles.finders.FileSystemFinder)和每个应用程序的静态子目录中的文件(使用django.contrib.staticfiles.finders.AppDirectoriesFinder)。如果存在多个具有相同名称的文件,则将使用找到的第一个文件。

请注意搜索每个应用的静态子目录的行。

现在让我们看看django-bootstrap-static的文件夹结构,我们看到两个主要文件夹bootstrapfontawesome。如果您查看内部,它们只包含__init__.py和名为static的文件夹。

基本上,bootstrapfontawesome都可以被视为Django应用(即与您使用python manage.py startapp创建的应用类似)。通过将bootstrapfontawesome添加到您的INSTALLED_APPS中,您已将它们作为应用程序包含在您自己的Django项目中,而Django的STATICFILES_FINDERS将会查看这些内容两个应用程序也可以查找名为static的文件夹。因此,在这种情况下,它可以找到这些静态文件,并在您运行python manage.py collectstatic时将其包含在内。

修改

我忘了回答有关SASS的部分。为此,我可能会使用像django-sass-processor这样的库,并使用bootstrap创建一个名为python manage.py startapp bootstrap的应用程序,并在其中创建一个名为static的文件夹。在static文件夹中,我将创建我的SASS文件夹结构并执行必要的覆盖和个性化。

奖金:可以找到构建SASS项目的好方法here