提问者:小点点

无法在Django中加载CSS


我是Django的新手,现在我有加载css文件的问题。 我的windows系统中有以下目录树:

案例1:

.
|__myproject
      |__+myproject
      |__+myapp
      |__-static
      |      |___-css
      |            |__style.css
      |__-templates
              |__base.html

base.html=>;

{% load static %}
<!DOCTYPE html>
<html>
  <head>
    <link href="{% static "css/style.css" %}" rel="stylesheet">
  </head>
  <body>
    # ...
  </body>
</html>

settings.py=>;

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
TEMPLATE_DIR = os.path.join(BASE_DIR, "templates")
STATICFILES_DIR = os.path.join(BASE_DIR, "static")

STATIC_URL = '/static/'
STATICFILES_DIRS = [
    STATICFILES_DIR,
]

INSTALLED_APPS = [
    # ...
    'django.contrib.staticfiles',
    # ...
]

TEMPLATES = [
    {
        # ...
        'DIRS': [TEMPLATE_DIR,],
        # ...
    },
]

使用这些设置和配置,CSS文件无法加载。

但当我将目录树更改为:

案例2:

.
|__+myproject
|__+myapp
      |__-static
      |      |__style.css
      |__-templates
             |__base.html

和base.html=>;

# ...
<link href="{% static "style.css" %}" rel="stylesheet">
# ...

现在起作用了。

那么案例一有什么问题呢? 这里少了什么?


共2个答案

匿名用户

请在您的设置中添加这些行。py

STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),
]

匿名用户

您编写了一些不方便的编码。

  1. 应该是第一行。 则{%load static%}

2.使用不同类型的引用。 (“”和“”)表示href和static。

3.在链接中使用type=“text/css”。 像这样-

<link rel="stylesheet" href="{% static 'css/style.css' %}"  type="text/css">

*在您的代码中,计算机事物(“{%static”)和(“%}”)是两个单独的字符串,因此style.css不在语法中。 对于这种特殊情况(引号中的引号),python同时支持(“”)和('')(请参阅文本颜色)*

希望能帮上忙。谢谢。