静态文件加载

发布于 2019-10-26 17:52:00   阅读量 104  点赞 0  

  在Django模板中,不能直接加载静态文件,需使用static标签来加载静态文件,要使用static标签,首先需要使用{% load static %}来加载static标签。加载静态文件的步骤如下:

  1. 确保django.contrib.staticfiles已添加到settings.INSTALLED_APP中。

  2. 确保已在setting.py中设置了STATIC_URL(例中为/static/)

    STATIC_URL且只有在这种情况下,在DTL中的src,href属性值才可用原生的url

  3. 在已安装的app文件夹下创建一个名为static 的文件夹 (<u>app下存储静态文件的文件夹必须命名为static)</u> ,然后再在这个static文件夹下创建一个与当前app同名的文件夹,再将静态文件放在这个文件夹下。

    若直接将静态文件放在app下的static文件夹里,由于django并不会区分各个app的static文件夹,故在加载同名文件的时候会出现混淆;再在app的static文件夹下创建一个与app同名的文件夹,可以避免这样的混淆。

  4. 在模板中使用load标签加载static标签 (static非django内置标签,故需用load标签加载),再将对应的src、href属性的值替换为static标签,static标签会在所有app下的static文件夹查找静态文件。 示例:

     {% load static %}
     <link rel="stystle" href="{% static 'style.css' %}">
    
  1. 若有一些静态文件是与整个项目相关的,则可以在settings.py中添加STATICFILES_DIRS(列表变量),则DTL就会在列表中指定的路径查找静态文件,一般用于设置通用的静态文件。其中STATICFILES_DIR定义一个目录列表,与整个项目都有关的静态文件可在其中查找。一般可设为:
     STATICFILES_DIRS = [
         os.path.join(BASE_DIR,"static")
     ]
    
  1. 可以在settings.py中的TEMPLATES/OPTIONS添加builtins:['dhango.templates.static'],则可以直接在模板中使用static标签,不用每次都在模板中加载静态文件先用load标签加载static标签。
  1. 若没有在settings.INSTALLED_APPS中添加django.contrib.staticfiles,则需要手动将请求静态文件的url与静态文件的路径进行映射。 示例代码如下:

     from django.conf import settings
     from django.conf.urls.static import static
    
     urlpatterns = [
         #其他的url映射
         static(settings.STATIC_URL,document_root=settings.STATIC_ROOT),
     ]
    


Last Modified : 2020-03-09 17:52:00