template 模板
- 模板语言
if 、 for 、 jquery
等 - 模板继承
成对出现 if ,for
if
{if ...}
{endif}
for
{for i in ..}
{endfor}
{% load staticfiles %} #载入静态配置文件,这里只是路径
在 setings.py
STATIC_URL = '/static/'
#这里可以改
语法格式: {{obj|filter:param}}
1 add : 给变量加上相应的值
2 addslashes : 给变量中的引号前加上斜线
3 capfirst : 首字母大写
4 cut : 从字符串中移除指定的字符
5 date : 格式化日期字符串
6 default : 如果值是False,就替换成设置的默认值,否则就是用本来的值
7 default_if_none : 如果值是None,就替换成设置的默认值,否则就使用本来的值
实例:
value1="aBcDe"
{{ value1|upper }}<br>
value2=5
{{ value2|add:3 }}<br>
value3='he llo wo r ld'
{{ value3|cut:' ' }}<br>
import datetime
value4=datetime.datetime.now()
{{ value4|date:'Y-m-d' }}<br>
value5=[]
{{ value5|default:'空的' }}<br>
value6='<a href="#">跳转</a>'
{{ value6 }}
{% autoescape off %}
{{ value6 }}
{% endautoescape %}
{{ value6|safe }}<br>
{{ value6|striptags }}
value7='1234'
{{ value7|filesizeformat }}<br>
{{ value7|first }}<br>
{{ value7|length }}<br>
{{ value7|slice:":-1" }}<br>
value8='http://www.baidu.com/?a=1&b=3'
{{ value8|urlencode }}<br>
value9='hello I am yuan'
我的template
<!DOCTYPE html>
{% load staticfiles %} #这里载入jQuery ,在setings.py里面设置
<html lang="en">
<head>
<meta charset="UTF-8">
<title>hc</title>
<script src="{% static 'jquery-3.3.1.min.js' %}"></script> #在指定位置载入
</head>
<body>
<h1> user meagess</h1>
{% for item in obj_sqlite %}
<div>
<span>{{ item.username | upper}}</span>
# '|'类似管道付,后面写的是一个方法、 upper:全部大写
<span>{{ item.password | add:100}}</span>
# add:100 是把前面的值增加100.前面的变量必须是数值
<p></p>
</div>
{% endfor %}
{{ abc }}
<br>
{{ abc | cut:' ' }} # 使用了cut 移除指定的字符
<br>
{{ d }}
<br>
{{ d | date:'Y - m - d' }} # 使用了date 把后端输出的时间格式化到前端
</body>
</html>
引入时间函数,才能调用。
import datetime
d = datetime.datetime.now() # .now() 为当前的时间
Dec. 17, 2018, 4:46 p.m.
模板继承
在 template 里面定义
base.html
总的页面。所用子页面继承他的内容
<div>
{% block content %}
#这里是你需要的页面
{% endblock %}
</div>
login.html #子页面 里面写该页面需要的内容
{% extends 'base.html' %}
{% block content %}
#你需要的内容
{% endblock %}
simple_tag
当django的原生方法不够用时, 我可以自定方法来使用 这就是simple_tag
首先创建包 必须是 templatetags 这个名字
在这个包下创建一个py文件。名字可以自定义
创建了一个 my_tag.py 文件
my_tag.py
from django.template improt Library #首先导入模块 固定导入
register = Library() #这个实例化的对象必须叫 register
@register.filter # filter 方法只能传递两个参数。 这里就是装饰器了
def filter_func(x , y): #.filter 方法只能传递两个参数,多了就不行
return x+y
@register.simple_tag # simple_tag 它可以接收多个参数
def simple_func(t,a,b,c): # .simple_tag 方法 可以传递多个参数
return '2018-12-17'
这项目的名字 一定要再 setings.py 里面的 INSTALLED_APPS 里面
还有就是再html 里面去定义引用
{% load my_tag %}
#要再template 里去引入这个我创建的 my_tag.py 文件
{{ test|filter_func:'123' }}
# 传入两个参数,这里用来拼接,因为上面的函数定义了 return x+y
# test 当成第一个参数,'123' 当成第二个参数,传入 filter_func 这个方法里
{{ simple_func 't' 'a' 'b' 'c' }}
# 这里传入什么值 都return一个固定值,因为我方法里是这样定义了
simple_tag
总结一下
-
创建包必须的名字必须是 'templatetags' 这个名字
-
导入这个模块,Library模块是装饰器 'from django.template improt Library'
-
这个实例化的对象必须叫 'register' --> register = Library()
-
这项目的名字一定要再 setings.py 的 INSTALLED_APPS 里 有定义这个项目名
-
在template里面需要引用 写好的.py文件 '{% load my_tag %} '
.
网友评论