需求
引用静态文件的目录不写死
速查
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> |
原理:
文件最开头导入sample_tag的static({% load static %})或staticfiles文件
调用的时候,获取static函数的返回值
后面再加上js文件的路径
不用再settings里添加参数