Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python django中的静态/CSS文件问题_Python_Django_Django Static - Fatal编程技术网

Python django中的静态/CSS文件问题

Python django中的静态/CSS文件问题,python,django,django-static,Python,Django,Django Static,我刚刚接触django,在为登录和注销制作了一个简单的身份验证表单之后。一切都很好,但每当我想对样式(CSS)进行一些更改时,它就不起作用了。我尝试过改变静态文件的目录,但都没有成功。即使我从CSS文件中删除了所有代码,页面仍然会显示所有与样式相关的内容。请告诉我该怎么办?下面我附上了我所有代码和目录的图片 听起来CSS文件已经被浏览器缓存了。尝试清除缓存并重新加载页面。然后,您应该查看Django是否正在加载CSS文件。如果你使用Chrome浏览器,你可以用CTRL+Shift+R进行硬加载,

我刚刚接触django,在为登录和注销制作了一个简单的身份验证表单之后。一切都很好,但每当我想对样式(CSS)进行一些更改时,它就不起作用了。我尝试过改变静态文件的目录,但都没有成功。即使我从CSS文件中删除了所有代码,页面仍然会显示所有与样式相关的内容。请告诉我该怎么办?下面我附上了我所有代码和目录的图片


听起来CSS文件已经被浏览器缓存了。尝试清除缓存并重新加载页面。然后,您应该查看Django是否正在加载CSS文件。如果你使用Chrome浏览器,你可以用CTRL+Shift+R进行硬加载,听起来CSS文件已经被浏览器缓存了。尝试清除缓存并重新加载页面。然后,您应该查看Django是否正在加载CSS文件。如果你使用Chrome,你可以用CTRL+Shift+R进行硬重新加载,你面临的问题不是Django特有的,但是你可以用Django解决。 浏览器倾向于缓存静态文件,如CSS,以获得更好的性能和更低的数据消耗。
一个快速修复方法是使用浏览器清除缓存。解决方案取决于您的浏览器。然而,这种方法有两个问题

  • 每次都必须清除缓存
  • 生产中的用户也将面临同样的问题。你推送一个更新,他们会看到HTML内容,CSS中的样式在浏览器清除缓存之前不会应用。
  • 要一次性解决这些问题,请执行以下步骤:

  • settings.py
    中添加一个常量,并将其命名为
    PROJECT\u VERSION
    PROJECT\u VERSION
    的值应为项目的版本

    PROJECT_VERSION = "0.0.0.1" # replace the version number with your project version
    
  • 创建一个
    templates
    文件夹(如果没有)

  • templates
    文件夹中创建一个名为
    templatetags
    的文件夹

  • 模板标签
    中,添加一个空文件,并将其命名为
    \uuuu init\uuuuuuuuuuuuuuuupy

  • 添加另一个文件并随意调用它(我称之为
    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\u bust%}
    。请注意,这不会更改文件的内容,但会强制浏览器重新获取文件。例如:

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

  • 在调试模式下(在开发过程中),'cache_bust'的值每次都会更改,因此缓存不会有任何问题。

    在生产模式下,“cache_bust”的值将是您在“settings.py”中设置的项目版本。文件将被缓存,但每当您更改项目的版本时,浏览器将重新获取这些文件。您面临的问题不是Django特有的,但您可以使用Django解决。 浏览器倾向于缓存静态文件,如CSS,以获得更好的性能和更低的数据消耗。
    一个快速修复方法是使用浏览器清除缓存。解决方案取决于您的浏览器。然而,这种方法有两个问题

  • 每次都必须清除缓存
  • 生产中的用户也将面临同样的问题。你推送一个更新,他们会看到HTML内容,CSS中的样式在浏览器清除缓存之前不会应用。
  • 要一次性解决这些问题,请执行以下步骤:

  • settings.py
    中添加一个常量,并将其命名为
    PROJECT\u VERSION
    PROJECT\u VERSION
    的值应为项目的版本

    PROJECT_VERSION = "0.0.0.1" # replace the version number with your project version
    
  • 创建一个
    templates
    文件夹(如果没有)

  • templates
    文件夹中创建一个名为
    templatetags
    的文件夹

  • 模板标签
    中,添加一个空文件,并将其命名为
    \uuuu init\uuuuuuuuuuuuuuuupy

  • 添加另一个文件并随意调用它(我称之为
    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\u bust%}
    。请注意,这不会更改文件的内容,但会强制浏览器重新获取文件。例如:

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

  • 在调试模式下(在开发过程中),'cache_bust'的值每次都会更改,因此缓存不会有任何问题。

    在生产模式下,“cache_bust”的值将是您在“settings.py”中设置的项目版本。文件将被缓存,但在您更改项目版本时,浏览器将重新获取这些文件。感谢您的响应…但这对我不起作用..使用此模式时出现许多错误。但正如您提到的“清理浏览器缓存”,这对我帮助很大。Thananks感谢您的回复…但它对我不起作用…在使用此模式时出现许多错误。但正如您提到的“清理浏览器缓存”,它对我帮助很大。蒂纳克斯