太原网站建设ty556,提高wordpress访问速度,做区块链网站的公司,wordpress悬浮音乐播放器插件目录
一、模板层
1、介绍
2、了解
3、页面静态化
4、模版语法
5、内置过滤器
6、标签
for标签 if 标签
7、模板导入和继承
模板导入
模板继承 一、模板层
1、介绍
模板在浏览器中是运行不了的 ----》因为它有模板语法 ----》浏览器解析不了模板语法 必须在后端渲…目录
一、模板层
1、介绍
2、了解
3、页面静态化
4、模版语法
5、内置过滤器
6、标签
for标签 if 标签
7、模板导入和继承
模板导入
模板继承 一、模板层
1、介绍
模板在浏览器中是运行不了的 ----》因为它有模板语法 ----》浏览器解析不了模板语法 必须在后端渲染完成(替换完成) -----》变成纯粹的htmlcssjs这种在后端会被渲染的类python语法它叫模板语法 django中它又叫dtl(django template language)
2、了解
python的模板HTML代码模板语法
def current_time(req):# 原始的视图函数# import datetime# now datetime.datetime.now()# html htmlbody现在时刻h1%s./h1/body/html %now# django模板修改的视图函数from django.template import Template,Contextnow datetime.datetime.now()# 内部打开了这个模板 ---》读出所有内容实例化得到了t对象t Template(htmlbody现在时刻是:h1{{current_date}}/h1/body/html)# t get_template(current_datetime.html)c Context({current_date:str(now)})html t.render(c)return HttpResponse(html)# 另一种写法(推荐)import datetimenow datetime.datetime.now()return render(req, current_datetime.html, {current_date:str(now)[:19]}) 总结
render(request,模板名字,context{key:value,key1:value})
本质是
tTemplate(htmlbody现在时刻是:h1{{current_date}}/h1/body/html)
cContext({current_date:str(now)})
htmlt.render(c) # 返回是字符串
HttpResponse(html)
3、页面静态化
把什么页面做成静态化的----》访问量高的页面目的提高项目并发量响应速度和效率就高了把首页静态化
def index(request):
# 1 判断 cache文件夹下有没有index.html 纯静态页面
# 2 如果没有做下面的事# books Book.object.all()# t Template(htmlbody现在时刻是:h1{{current_date}}/h1/body/html)# # tget_template(current_datetime.html)# c Context({books:books})# html t.render(c)# 保存到某个文件中 cache文件夹下 index.html
# 3 如果有那个文件打开文件 ---》HttpReponse
booksBook.object.all()
return render(request,index.html,{books:books})
4、模版语法
变量{{ 变量名 }} 字典列表对象 ----》 通过.拿到属性或方法
字典dic.name---这不是python语法 ---- dic[name] dic.get(name)列表list.2---这不是python语法 ---- list[0]对象person.name ---- 是python语法 person.run ---- 不是python语法会自动加括号把run的返回值放在模板中 person.run()不支持传参数
深度查询 用句点符过滤器标签% %
5、内置过滤器
p{{ now | date:Y-m-d H:i:s }}/p
注意冒号后面不能加空格
{#如果变量为空设置默认值,空数据None变量不存在都适用#}
p{{ name |default:数据为空 }}/p
{#计算长度只有一个参数#}
p{{ person_list |length }}/p
{#计算文件大小#}
p{{ 1024 |filesizeformat }}/p{#字符串切片前闭后开前面取到后面取不到#}
p{{ hello world lqz |slice:2:-1 }}/p
p{{ hello world lqz |slice:2:5 }}/p{#截断字符至少三个起步因为会有三个省略号传负数123都是三个省略号#}
p{{ 刘清政 world lqz |truncatechars:4 }}/p
{#截断文字以空格做区分这个不算省略号#}
p{{ 刘清政 是 大帅比 谢谢 |truncatewords:1 }}/p{{s}} 不会渲染成标签没有xss攻击
{#我们知道s是安全的我们可以使用safe标签把它渲染成真正的标签}
p{{ link1 }}/p
p{{ link1|safe }}/p
p{{ link }}/ppspades;/p
p{{ dot }}/p{#add 可以加负数传数字字符串都可以#}
p{{ 10|add:-2 }}/p
p{{ li.1|add:-2 }}/p
p{{ li.1|add:2 }}/p
p{{ li.1|add:2 }}/p
p{{ li.1|add:-2e }}/p{#upper#}
p{{ name|upper }}/p
p{{ LQZ|lower }}/p
6、标签
for标签
{% for person in person_list %}p{{ person.name }}/p
{% endfor %}# 可以利用{% for obj in list reversed %}反向完成循环。遍历一个字典
{% for key,val in dic.items %}p{{ key }}:{{ val }}/p
{% endfor %}for … empty
# for 标签带有一个可选的{% empty %} 从句以便在给出的组是空的或者没有被找到时可以有所操作。
{% for person in person_list %}p{{ person.name }}/p{% empty %}psorry,no person here/p
{% endfor %}if 标签
# {% if %}会对一个变量求值如果它的值是True存在、不为空、且不是boolean类型的false值对应的内容块会输出。{% if num 100 or num 0 %}p无效/p
{% elif num 80 and num 100 %}p优秀/p
{% else %}p凑活吧/p
{% endif %}if语句支持 and 、or、、、、!、、、in、not in、is、is not判断。7、模板导入和继承
模板导入
语法{% include 模版名称 %}
!--little.html 这个是以后要导入的代码块--
divh1我是广告/h1p亚洲最大交友平台/pp名字是{{ name }}---诚信交友/p
/div
!--在index.html 或者 login.html中想用--
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/title/head
body
div{% include little.html %}!--这个位置引入即可但是如果little中有模板语法需要如下--
/div
hr
div我是div222
/div/body
/html
# python代码
def index(request):return render(request, index.html, {name: 彭于晏})
模板继承
Django模版引擎中最强大也是最复杂的部分就是模版继承了。模版继承可以让您创建一个基本的“骨架”模版它包含您站点中的全部元素并且可以定义能够被子模版覆盖的 blocks 。
!DOCTYPE html
html langen
headlink relstylesheet hrefstyle.css/title{% block title %}My amazing site{% endblock %}/title
/headbody
div idsidebar{% block sidebar %}ullia href/Home/a/lilia href/blog/Blog/a/li/ul{% endblock %}
/divdiv idcontent{% block content %}{% endblock %}
/div
/body
/html这个模版我们把它叫作 base.html 它定义了一个可以用于两列排版页面的简单HTML骨架。“子模版”的工作是用它们的内容填充空的blocks。
在这个例子中 block 标签定义了三个可以被子模版内容填充的block。 block 告诉模版引擎 子模版可能会覆盖掉模版中的这些位置。
子模版可能看起来是这样的
{% extends base.html %}{% block title %}My amazing blog{% endblock %}{% block content %}
{% for entry in blog_entries %}h2{{ entry.title }}/h2p{{ entry.body }}/p
{% endfor %}
{% endblock %}extends 标签是这里的关键。它告诉模版引擎这个模版“继承”了另一个模版。当模版系统处理这个模版时首先它将定位父模版——在此例中就是“base.html”。
那时模版引擎将注意到 base.html 中的三个 block 标签并用子模版中的内容来替换这些block。根据 blog_entries 的值输出可能看起来是这样的
!DOCTYPE html
html langen
headlink relstylesheet hrefstyle.css /titleMy amazing blog/title
/headbodydiv idsidebarullia href/Home/a/lilia href/blog/Blog/a/li/ul/divdiv idcontenth2Entry one/h2pThis is my first entry./ph2Entry two/h2pThis is my second entry./p/div
/body
/html