• Django--static静态文件引用


    需求

    引用静态文件的目录不写死


    速查

    settings.py

    TEMPLATES--context_processors列表中加入:

    1
    "django.core.context_processors.static",
    html引用
    1
    <script src="{{ STATIC_URL }}js/jquery-2.1.4.min.js"></script>



    知识点

    Django框架有自己设定的context值,并把他传入模板中进行渲染。​



    详细

    静态文件目录以前在引用的时候是写死的:

    1
    <script src="/static/js/jquery-2.1.4.min.js"></script>

    在settings中已经定义了静态文件的目录:

    1
    STATIC_URL= '/static/'

    所以,我们以后引用的时候,最好也去调用配置文件中的参数,方便未来的修改。

    方法一:

    利用Django框架自定义context值

    html
    1
    <script src="{{ STATIC_URL }}js/jquery-2.1.4.min.js"></script>
    settings要添加一个参数:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [os.path.join(BASE_DIR, 'templates')]
            ,
            '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',
                    "django.core.context_processors.static",    #添加此行
                ],
            },
        },
    ]
    原理:(源码)​

    1
    from django.core.context_processors import static

    1
    2
    3
    4
    5
    def static(request):
        """
        Adds static-related context variables to the context.
        """
        return {'STATIC_URL': settings.STATIC_URL}

    方法二:

    利用sample_tag

    html
    1
    2
    3
    4
    5
    6
    {% load staticfiles %}
    <html lang="en">
    <head></head>
    <body>
        <script src="{% static "js/jquery-2.1.4.min.js" %}"></script>
    </body>
    原理:​
    1. 文件最开头导入sample_tag的static({% load static %})或staticfiles文件

    2. 调用的时候,获取static函数的返回值

    3. 后面再加上js文件的路径

    4. 不用再settings里添加参数








  • 相关阅读:
    测开之路九十九:js函数、事件、window窗体对象
    测开之路九十八:js变量和语句
    测开之路九十七:js的引用方式
    学生管理之登录实现
    学生管理之表单设计
    二、Django用户认证之cookie和session
    一、Django前后端交互之Ajax和跨域问题
    中间介
    Java SE之反射技术[Class](三)
    Java SE之反射技术[Field](二)
  • 原文地址:https://www.cnblogs.com/daliangtou/p/5305336.html
Copyright © 2020-2023  润新知