【发布时间】:2020-11-16 04:31:11
【问题描述】:
我只是 django 的新手,并且在为登录和注销制作了一个简单的身份验证表单之后。一切都运行良好,但每当我想对样式 (CSS) 进行一些更改时,它都不起作用。我在更改静态文件的目录后尝试过,但都是徒劳的。即使我从 CSS 文件中删除所有代码,页面仍然显示所有与样式相关的内容。请建议我该怎么办?下面我附上了我所有代码和目录的图像。
【问题讨论】:
标签: python django django-static
我只是 django 的新手,并且在为登录和注销制作了一个简单的身份验证表单之后。一切都运行良好,但每当我想对样式 (CSS) 进行一些更改时,它都不起作用。我在更改静态文件的目录后尝试过,但都是徒劳的。即使我从 CSS 文件中删除所有代码,页面仍然显示所有与样式相关的内容。请建议我该怎么办?下面我附上了我所有代码和目录的图像。
【问题讨论】:
标签: python django django-static
听起来 CSS 文件已被您的浏览器缓存。尝试清除缓存并重新加载页面。然后你应该看看 Django 是否正在加载你的 CSS 文件。如果您使用 Chrome,您可以使用 CTRL + Shift + R 进行硬重新加载
【讨论】:
您所面临的问题并非特定于 Django,但您可以使用 Django 解决它。
浏览器倾向于缓存 CSS 等静态文件,以获得更好的性能和更低的数据消耗。
一种快速解决方法是使用浏览器清除其缓存。解决方案取决于您的浏览器。但是,这种方法存在两个问题。
要一劳永逸地解决这些问题,请按照以下步骤操作:
在您的settings.py 中添加一个常量并将其命名为PROJECT_VERSION。 PROJECT_VERSION 的值应该是你项目的版本。
PROJECT_VERSION = "0.0.0.1" # replace the version number with your project version
如果没有templates 文件夹,请创建它。
在您的 templates 文件夹中创建一个名为 templatetags 的文件夹
在templatetags里面,添加一个空文件,命名为__init__.py
添加另一个文件并随意命名(我称之为custom_tags.py)
在第二个文件中,添加以下内容:
from django import template
from django.conf import settings
import uuid
register = template.Library()
@register.simple_tag(name='cache_bust')
def cache_bust():
if settings.DEBUG:
version = uuid.uuid1()
else:
version = settings.PROJECT_VERSION
return '__v__={version}'.format(version=version)
在您的settins.py 中,添加以下行:
TEMPLATES = [
{
'OPTIONS': {
'libraries':{
'custom_tags': 'templates.templatetags.custom_tags', # Add this line
},
},
},
]
现在,在您的每个模板(HTML 文件)中,将其添加到顶部:
{% load custom_tags %}
最后一步,在引用任何静态文件(CSS、JS、PNG 等)时,将?{% cache_bust %} 添加到文件名的末尾。请注意,这不会更改文件的内容,但会强制浏览器重新获取它。例如:
<link rel="stylesheet" type="text/css" href="{% static 'Style.css' %}?{% cache_bust %}" />
【讨论】: