Django--static静态文件引用

Posted 大亮头

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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里添加参数

技术分享















以上是关于Django--static静态文件引用的主要内容,如果未能解决你的问题,请参考以下文章

Django开发环境静态文件访问配置

django STATIC/MEDIA配置

无法对非静态方法 getAssets() 进行静态引用 - 无法在片段中播放音频

片段中的网格视图

动态创建服务引用和使用服务

Android 我应该在异步任务中将片段作为弱引用传递吗?