Django 加载 CSS 非常慢,我应该在哪里插入 {% static 'Layout.css' %。



我正在使用 Django 开发一个 Web 应用程序,一切进展顺利,但过去一周我一直在努力解决两个问题:

问题1: 在我的项目中,我有一个名为User的应用程序,它具有以下结构:

User 
>templates
>User
>Layout.html
>Home.html
>static
>css
>User
>Layout.css
>Home.css

我想在我的所有页面上使用相同的标题和左侧菜单,这就是我的做法。

布局.html

{% load static %}
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="{% static 'User/css/Layout.css' %}">
{% block head %}
{% block title %}
{% endblock %}
{% block references %}
{% endblock %}
{% endblock %}
</head>
<body>
<header class="uppermenu">
</header>
<div class="leftsidemenu">
</div>
<div class="content"> 
{% block content %}
{% endblock %}
</div>
</body>
</html>

首页.html

{% extends "User/Layout.html" %}
{% load static %}
{% block head %}
{% block title %}
<title>Home</title>
{% endblock %}
{% block references %}
<link rel="stylesheet" href="{% static 'User/css/Home.css' %}">
{% endblock %}
{% endblock %}
{% block content %}
<!--Each page is going to have different content but the left side menu
and the header should remain the same -->
{% endblock %}

在.html中扩展布局.html时,我想添加主页.css但不确定将其放在哪里。我应该在布局.html和主页.html中的什么位置插入样式表?它们应该进入"头部",{%块引用%},{%块内容%}还是在哪里?最佳实践是什么?

2( 问题 2 - (烦人的那个(

我键入"python manage.py runserver",并在对模板和静态文件进行更改以查看它们的外观时不断重新加载页面。我可以看到 Html 文件中的更改立即发生,而 CSS 更改大约需要 1 小时(有时更长(。这太奇怪和烦人了,因为它让我的速度大大减慢了。

For example: 
If I change <p1>Hello</p> to <p1>Bye</p> in Home.html and reload the
page, I could see the changes immediately and "Hello" changes to "Bye"                  
as it is supposed to be. 
But if I change p1 {color: red}; to p1 {color: green} in my Home.css 
then the changes take place about 1 hour later (didn't really set up a 
timer but it takes so long). 

我通常使用Chrome,但尝试了Safari,结果是一样的。有人可以帮助我解决这些问题吗?第二个更让我担心,因为我不知道为什么会发生这种情况。

import os

SECRET_KEY = 'whatever'

ALLOWED_HOSTS = []
INSTALLED_APPS = [
'Application',
'Home',
'Login',
'User',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
ROOT_URLCONF = 'Agent_WebApp.urls'
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
WSGI_APPLICATION = 'Agent_WebApp.wsgi.application'
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'AAA',
'USER': 'root',
'PASSWORD': 'AAA',
}
}

AUTH_PASSWORD_VALIDATORS = [
{
'NAME':         
'django.contrib.auth.password_validation.UserAttribute     
SimilarityValidator',
},
{
'NAME': 
'django.contrib.auth.password_validation.MinimumLengthValidator',
},
{
'NAME': 
'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
'NAME': 
'django.contrib.auth.password_validation.NumericPasswordValidator',
},
]

LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True

STATIC_URL = '/static/'

编辑:我仍处于开发阶段,我的网站尚未上线

您的 CSS 文件可能存在浏览器内缓存,这会阻止加载 CSS 文件。 要解决此问题,您可以选择两种解决方案之一。

  1. 您可以简单地进行"完整"页面刷新。 通过按 Ctrl 和 F5 或按住键盘上的 Ctrl 或 shift 按钮并单击刷新按钮(浏览器左侧的圆圈箭头(

  2. 您可以在浏览器的开发人员工具中禁用缓存。 如果您使用的是Chrome,请单击浏览器右上角的3个点,然后单击更多工具,然后单击开发人员工具,然后转到"网络"选项卡,您将在左侧看到"禁用缓存"复选框。

注意: 如果您没有看到对 CSS 文件的请求,请观察您正在运行 RunServer 的控制台,这意味着它正在使用缓存副本,并且上述方法之一应该有效,但如果您看到对 CSS 文件的请求,那么这是一个不同的问题。

对于我在编写 Django 应用程序时的情况,通常会保留一个块来添加 CSS 样式表,而不是适用于所有页面的一般 CSS。我遵循以下做法:

<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- Add all the css that will apply to all pages -->
<link rel="stylesheet" type="text/css" href="{% static 'services/service/css/bootstrap.min.css' %}">
<link rel="stylesheet" type="text/css" href="{% static 'font-awesome/css/font-awesome.min.css' %}">
<link rel="stylesheet" type="text/css" href="{% static 'css/nav_fixed.css' %}">
<link rel="stylesheet" href="{% static 'css/footer.css' %}">
{% block addStyles %}
<!-- Adding other custom styles for different pages -->
{% endblock addStyles %}
<link rel="shortcut icon" type="image/x-icon" href="{% static "images/logo.jpg" %}" />
<title>{% block pageTitle %} Page title{% endblock pageTitle %}</title>
</head>

对于问题 2: 您能否提供有关如何设置STATIC_ROOT的更多详细信息。有时问题可能是您必须通过按 CTRL + F5 硬重新加载浏览器。

问候

尝试将包含 (settings.py,urls.py ,...( 的文件夹放在INSTALLED_APPS