第三百一十节,Django框架,模板语言
第三百一十节,Django框架,模板语言
模板语言就是可以将动态数据在html模板渲染的语言
一、接收值渲染
locals()函数,写在请求响应render()函数里,可以将逻辑处理函数里的变量传到html用模板语言渲染
{{...}}接收一个变量或者值进行渲染
逻辑处理
from django.shortcuts import render
from app1.models import * #导入数据库操作模块 #逻辑处理模块
def special(request): a = '叫卖录音网' return render(request, 'index.html', locals()) # 打开页面
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>{{ a }}</h1>
</body>
</html>
二、接收值,运行代码块
for循环
{% for item in item_list %}
<a>{{ item }}</a>
forloop.counter 计数器,记录循环次数
forloop.first 判断是否是循环第一次,返回布尔值
forloop.last 判断是否是循环最后一次,返回布尔值
{% endfor %}
逻辑处理
from django.shortcuts import render
from app1.models import * #导入数据库操作模块 #逻辑处理模块
def special(request): a = ['首页','产品展示','关于我们'] return render(request, 'index.html', locals()) # 打开页面
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<ul>
{% for i in a %}
<li>{{ i }}</li>
{{ forloop.counter }}
{{ forloop.first }}
{{ forloop.last }}
{% endfor %}
</ul>
</body>
</html>
if判断
{% if ordered_warranty %}
{% else %}
{% endif %}
逻辑处理
from django.shortcuts import render
from app1.models import * #导入数据库操作模块 #逻辑处理模块
def special(request): a = ['首页','产品展示','关于我们'] return render(request, 'index.html', locals()) # 打开页面
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<ul>
{% for i in a %}
{% if i == '首页' %}
<li style="color: #ee1215">{{ i }}</li>
{% elif i == '产品展示' %}
<li style="color: #1b47ee">{{ i }}</li>
{% else %}
<li>{{ i }}</li>
{% endif %}
{% endfor %}
</ul>
</body>
</html>
三、母板-子板-母板继承
母板继承就是访问的页面继承一个母板,将访问页面的内容引入到母板里指定的地方,组合成一个新页面返回给浏览器
一般母板里都是写的一个网页里不变的地方,也就是通用的地方,被继承页(访问页)都是每个页面不同的地方,也就是将页面不同的地方引入到母板组合成一个新页面返回浏览器
母板里一般都是网页的、头部、底部、头部底部css、头部底部js
被继承页(访问页)里一般都是新内容,新内容的css和js
母板:{% block title %} {% endblock %} 设置可调用区块或,有参设置可调用区块,无参调用区块
子板:{% extends "base.html" %} 子板继承母板
{% block title %} {% endblock %} 设置可调用区块或,有参设置可调用区块,无参调用区块
逻辑处理
from django.shortcuts import render
from app1.models import * #导入数据库操作模块 #逻辑处理模块
def special(request): return render(request, 'index.html', locals()) # 打开页面
母板
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" type="text/css" href="/static/css/tou.css">
{% block css %}{% endblock %} #调用子板的css样式
</head>
<body> <div id="tou">头部</div> {% block nei_rong %}{% endblock %} #调用子板的内容区块 <div id="wei">尾部</div>
</body>
</html>
子板(访问页)
{% extends "tou.html" %} #继承母板 {% block css %} #设置母版调用css样式区块
<link rel="stylesheet" type="text/css" href="/static/css/index.css">
{% endblock %} {% block nei_rong %} #设置母版调用字板内容区块
<div id="neir">内容</div>
{% endblock %}
四、帮助方法:
{{ item.event_start|date:"Y-m-d H:i:s"}} 格式化时间
{{ bio|truncatewords:"30" }} 只显示指定字数
{{ my_list|first|upper }} 首字母大写
{{ name|lower }} 首字母小写
五、自定义html模板可调用函数模块
a、在app应用中创建templatetags目录
b、在目录中创建任意 .py 文件,如:xx.py
在py文件里设置html可调用函数,注意py文件里有几个注意点如下:
#!/usr/bin/env python
# coding:utf-8
from django import template #必须导入这个模块
from django.utils.safestring import mark_safe #必须导入这个模块 register = template.Library() #固定格式必须设置这个变量 @register.simple_tag #自定义函数必须用上这个装饰器,html页面才可以调用
def my_simple_time(v1, v2, v3): #自定义函数
return v1 + v2 + v3 @register.simple_tag
def my_input(id, arg):
result = "<input type='text' id='%s' class='%s' />" % (id, arg,)
return mark_safe(result)
c、在使用自定义函数的html文件中导入自定义函数模块 xx.py 文件名
{% load 自定义函数模块名称 %}
d、html页面使用
{% 函数名称 参数 参数 参数 %}
{% load mbanyuyan %} #导入自定义函数模块
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body> {% my_simple_time 1 2 3 %} #传参并且执行自定义函数 </body>
</html>
注意:使用自定义html函数,必须在全局配置文件settings.py里的INSTALLED_APPS注册了app应用
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app01',
)
第三百一十节,Django框架,模板语言的更多相关文章
- 第三百一十二节,Django框架,Cookie
第三百一十二节,Django框架,Cookie 注意:获取Cookie是在请求对象里处理,设置Cookie是在响应对象里处理 普通Cookieset_cookie()设置普通cookie 参数: ke ...
- 第三百一十四节,Django框架,自定义分页
第三百一十四节,Django框架,自定义分页 自定义分页模块 #!/usr/bin/env python #coding:utf-8 from django.utils.safestring impo ...
- 第三百一十九节,Django框架,文件上传
第三百一十九节,Django框架,文件上传 1.自定义上传[推荐] 请求对象.FILES.get()获取上传文件的对象上传对象.name获取上传文件名称上传对象.chunks()获取上传数据包,字节码 ...
- 第三百一十六节,Django框架,中间件
第三百一十六节,Django框架,中间件 django 中的中间件(middleware),在django中,中间件其实就是一个类,在请求到来和结束后,django会根据自己的规则在合适的时机执行中间 ...
- 第三百一十五节,Django框架,CSRF跨站请求伪造
第三百一十五节,Django框架,CSRF跨站请求伪造 全局CSRF 如果要启用防止CSRF跨站请求伪造,就需要在中间件开启CSRF #中间件 MIDDLEWARE = [ 'django.midd ...
- 第三百一十八节,Django框架,信号
第三百一十八节,Django框架,信号 Django中提供了“信号调度”,用于在框架执行操作时解耦.通俗来讲,就是一些动作发生的时候,信号允许特定的发送者去提醒一些接受者. 也就是当程序有指定动作时, ...
- 第三百一十七节,Django框架,缓存
第三百一十七节,Django框架,缓存 由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将一个某个views的返 ...
- 第三百一十三节,Django框架,Session
第三百一十三节,Django框架,Session Django中默认支持Session,其内部提供了5种类型的Session供开发者使用: 1.数据库(默认)2.缓存3.文件4.缓存+数据库5.加密c ...
- 第三百一十一节,Django框架,Form表单验证
第三百一十一节,Django框架,Form表单验证 表单提交 html <!DOCTYPE html> <html lang="en"> <head& ...
随机推荐
- 关于centos7中使用rpm方式安装mysql5.7版本后无法使用root登录的问题
最近在centos7中通过rpm方式安装了最新版本的mysql-server 5.7 (mysql57-community-release-el7-7.noarch.rpm) ,发现安装成功后无法使用 ...
- C#--类成员
数据成员: 字段: 常量: 函数成员(执行代码): 方法: 属性 构造函数 析构函数 运算符 索引 事件 可以被声明为Static的类成员是:
- css常用标签及属性
css样式表常用的形式有三种,一.行内样式表.二.内部样式表.三.外部样式表 一. <p style="color:red;">nice to meet you< ...
- Android设计中的.9.png图片
.9.png是一种能够自己定义拉伸特定区域的图片格式. 简书:Android设计中的.9.png图片 在Android的UI设计开发中,非常多控件须要适配不同的手机分辨率进行拉伸或者压缩,这样就出现了 ...
- ssh:Permissions 0644 for ‘/root/.ssh/id_rsa’ are too open
最近,用ssh连接github时,突然提示“Permissions 0644 for ‘/root/.ssh/id_rsa’ are too open”,并且断开连接. 仔细阅读了一下ssh文档和这句 ...
- Spring 一二事(6) - IOC MVC 简易搭建
<bean id="personAction" class="com.lee.spring008.IOC.DI.MVC.PersonAction"> ...
- Serviceability
http://hg.openjdk.java.net/jdk7u/jdk7u2/hotspot/file/6259c6d3bbb7/agent/doc/clhsdb.html http://blog. ...
- 基于python的接口测试框架设计(三)接口测试的框架
基于python的接口测试框架设计(三)接口测试的框架 其实我这里用到的是unittest单元测试框架,,这个框架好就好在比较清楚,,setup terdown都可以处理一些初始化及完成后的工作 主要 ...
- 使用yum时出现的404
今天使用yum升级nss yum update nss 结果爆出错误: http://people.centos.org/tru/devtools-2/6Server/x86_64/RPMS/repo ...
- ajaxfileupload 半成品遇到的问题,不走success 走error的问题
大部分都是datatype 为 json的时候遇到的 1.遇到json被加pre标签 去掉 2.遇到json被加audio 标签 去掉 3.遇到json转换错误,换方式转 改后的代码如下 , 有注 ...