【问题标题】:Static/CSS files issues in djangodjango 中的静态/CSS 文件问题
【发布时间】:2020-11-16 04:31:11
【问题描述】:

我只是 django 的新手,并且在为登录和注销制作了一个简单的身份验证表单之后。一切都运行良好,但每当我想对样式 (CSS) 进行一些更改时,它都不起作用。我在更改静态文件的目录后尝试过,但都是徒劳的。即使我从 CSS 文件中删除所有代码,页面仍然显示所有与样式相关的内容。请建议我该怎么办?下面我附上了我所有代码和目录的图像。

【问题讨论】:

    标签: python django django-static


    【解决方案1】:

    听起来 CSS 文件已被您的浏览器缓存。尝试清除缓存并重新加载页面。然后你应该看看 Django 是否正在加载你的 CSS 文件。如果您使用 Chrome,您可以使用 CTRL + Shift + R 进行硬重新加载

    【讨论】:

      【解决方案2】:

      您所面临的问题并非特定于 Django,但您可以使用 Django 解决它。 浏览器倾向于缓存 CSS 等静态文件,以获得更好的性能和更低的数据消耗。
      一种快速解决方法是使用浏览器清除其缓存。解决方案取决于您的浏览器。但是,这种方法存在两个问题。

      1. 您必须每次都清除缓存
      2. 您的用户在生产中也将面临同样的问题。您推送更新,他们会看到 HTML 内容,在浏览器清除其缓存之前不会应用 CSS 中的样式。

      要一劳永逸地解决这些问题,请按照以下步骤操作:

      1. 在您的settings.py 中添加一个常量并将其命名为PROJECT_VERSIONPROJECT_VERSION 的值应该是你项目的版本。

        PROJECT_VERSION = "0.0.0.1" # replace the version number with your project version
        
      2. 如果没有templates 文件夹,请创建它。

      3. 在您的 templates 文件夹中创建一个名为 templatetags 的文件夹

      4. templatetags里面,添加一个空文件,命名为__init__.py

      5. 添加另一个文件并随意命名(我称之为custom_tags.py

      6. 在第二个文件中,添加以下内容:

         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)
        
      7. 在您的settins.py 中,添加以下行:

         TEMPLATES = [
             {
                 'OPTIONS': {        
                     'libraries':{
                         'custom_tags': 'templates.templatetags.custom_tags', # Add this line
                     },
                 },
             },
         ]
        
      8. 现在,在您的每个模板(HTML 文件)中,将其添加到顶部:

         {% load custom_tags %}
        
      9. 最后一步,在引用任何静态文件(CSS、JS、PNG 等)时,将?{% cache_bust %} 添加到文件名的末尾。请注意,这不会更改文件的内容,但会强制浏览器重新获取它。例如:

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

      在调试模式下(开发时),`cache_bust` 的值每次都会改变,所以缓存不会有任何问题。
      在生产模式下,`cache_bust` 的值将是您在 `settings.py` 中设置的项目版本。这些文件将被缓存,但只要您更改项目的版本,浏览器就会重新获取这些文件。

      【讨论】:

      • 感谢您的回复...但它对我不起作用...在使用此模式时出现很多错误。
      • 但是正如你提到的“清理你的浏览器缓存”它帮助了我很多。谢谢
      猜你喜欢
      • 2018-10-21
      • 2011-06-11
      • 1970-01-01
      • 1970-01-01
      • 2020-11-06
      • 2011-06-18
      • 2013-10-09
      • 2013-11-22
      • 2016-11-13
      相关资源
      最近更新 更多