【问题标题】:Django does not load CSS properly for some template filesDjango 无法为某些模板文件正确加载 CSS
【发布时间】:2013-10-05 17:54:49
【问题描述】:

我正在使用 twitter-bootstrap 设计我的页面。我制作了一个 base.html 文件,该文件将作为我的所有模板扩展的全局基础文件。

我的问题是当我为所有模板扩展 base.html 时。它不显示 CSS,而是以纯 HTML 显示所有内容。当我查看页面源代码时,可以看到 javascript 和 CSS 文件。 (这意味着这些文件已正确加载但未显示)

settings.py

STATIC_URL = '/static/'

STATIC_ROOT = '/var/www/static/'

STATICFILES_DIRS = '/home/User/workspace/project/static'

我的项目结构如下:

-App1
   -templates
     - sample.html (which extends base.html)
-App2
-App3
-App4
-static
  -css
     -bootstrap.css
  -js
     -bootstrap.js
     -jquery.js
-templates
  -base.html

我不明白可能是什么问题。任何帮助都会非常棒!

【问题讨论】:

  • 你能分享你的模板目录吗?也许 sample.html 找不到 base.html 因为您只添加了主模板目录?
  • 另外,您如何尝试将静态文件添加到您的模板中?
  • 标题与实际问题有什么关系?
  • @Daniel 这是错误的......我还有另一个问题是我提出的标题......我现在已经改变了它。

标签: css django twitter-bootstrap django-forms django-views


【解决方案1】:

不要像字符串一样使用 STATICFILES_DIRS。

导入 os 并使用 sep 函数找到你的静态文件目录。我就是这样做的:

import os
STATIC_ROOT = ''
STATIC_URL = '/static/'
STATICFILES_DIRS = (
    os.sep.join([os.path.dirname(os.path.dirname(__file__)), 'static']),
)

【讨论】:

    【解决方案2】:

    我所做的并且真正帮助我的是:

    1. 转到 settings.py 并在文件末尾添加 --> STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]。

    2. 转到模板文件夹中的基本 html 模板,并在 head 部分中添加这两行(只需确保在静态中创建一个文件夹。在我的情况下,它是 css,如下所示,可能是不同的名称):

      a){% load static %} b) <link rel="stylesheet" type= "text/css" href="{% static 'css/mystyle.css'%}">

    【讨论】:

    • 对不起,我不得不重新发布它,因为我第一次发布它时,它没有显示整个帖子。
    猜你喜欢
    • 1970-01-01
    • 2016-02-26
    • 1970-01-01
    • 2017-07-29
    • 2017-09-22
    • 2020-02-26
    • 2017-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多