【问题标题】:Why is Django not loading my CSS?为什么 Django 不加载我的 CSS?
【发布时间】:2017-12-09 19:20:49
【问题描述】:

我正在使用 Django 创建一个网站,但由于某种原因,我的 CSS 文件对页面没有任何影响。我已检查以确保我的 STATIC_URL 已定义,但仍然没有运气。

我的设置.py:

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.11/howto/static-files/

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

在我的博客应用程序中,我有一个静态目录

blog
  |
  static
     |
     css
       |
       blog.css

我的 HTML 文档:

{% load staticfiles %}
<!DOCTYPE html>
<html lang="en">
    <head>
        <title>Medicare Supplemental info</title>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
        <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css">
        <!-- This is where I'm loading the CSS file -->
        <link rel="stylesheet" href="{% static 'css/blog.css' %}">
    </head>

我检查以确保我在 settings.py 中安装了所需的应用程序:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog',
]

我也尝试过改变加载静态文件的方式:

{% load staticfiles %}

到:

{% load static %}

仍然没有运气。我做错了什么?

【问题讨论】:

    标签: html css django python-3.x django-templates


    【解决方案1】:

    我认为你在 urls.py 中错过了这个:

    from django.conf import settings
    from django.conf.urls.static import static
    
    urlpatterns = [
        # ... the rest of your URLconf goes here ...
    ] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
    

    这项工作在开发中,在生产中您必须使用 manage.py 收集静态数据并使用 nginx(或 apache)提供静态数据。

    【讨论】:

    • 是的,这解决了我的问题。这是新事物吗?我不相信我必须在我创建的最后一个 Django 站点中这样做。
    • 这不是新的,如果你看到的是 1.7 版本。它就在那里。 docs.djangoproject.com/en/1.7/howto/static-files/…
    【解决方案2】:

    对于 django==2.0.2 不需要对 urls.py 进行任何更改,只需在 settings.py 中获取 STATIC_URL 即可

    【讨论】:

      【解决方案3】:

      遇到同样的问题,搜索无果后,在CMD窗口随便按了Enter,python runserver继续,发现/static/css/blog.css成功找到了。

      【讨论】:

        【解决方案4】:

        我遇到了一些问题,对我有用的解决方案是使用 CRTL-BREAK 停止服务器并重新启动。我正在使用 Django v.3.0.7。

        【讨论】:

          【解决方案5】:

          如果您没有像您的情况那样从其他 html 文件扩展,那么 html 文件中的第一个条目应该是 !DOCTYPE html,然后是加载模板标签,即 {%load staticfiles%}。

          【讨论】:

            【解决方案6】:

            对于在 django 删除设置文件中的 os 导入之后的任何人。

            使用STATIC_ROOT = BASE_DIR / 'static'代替os.path.....

            【讨论】:

              猜你喜欢
              • 2016-12-05
              • 1970-01-01
              • 2019-06-11
              • 2021-01-27
              • 1970-01-01
              • 1970-01-01
              • 2011-05-24
              • 2021-10-12
              • 2021-10-14
              相关资源
              最近更新 更多