191022Django模板
一、变量和句点符深度查找
- 字符串变量引用
def show_time(request):
now_time = datetime.datetime.now()
return render(request,'current_datatime.html',{'now_time':now_time})
<h1>It is now {{ now_time }}</h1>
- 列表变量引用
def query(request):
name_list = ['Abbie','Cathy','Emma']
return render(request, "query.html", {'name_list': name_list})
<h1>Hello {{ name_list.0 }}</h1>
<h1>Hello {{ name_list.1 }}</h1>
<h1>Hello {{ name_list.2 }}</h1>
- 字典变量引用
def query(request):
info = {'name':'Abbie','age':'18','gender':''}
return render(request, "query.html", {'info': info})
<h1>Name: {{ info.name }}, Age: {{ info.age }}</h1>
- 类对象的引用
class Cat():
def __init__(self,name):
self.name = name
def query(request):
c1 = Cat("大橘")
return render(request, "query.html", {'c': c1})
<h1>请主公以{{ c.name }}为重</h1>
二、过滤器(filter)
<h1>sum: {{ a|add:b }}</h1> #加
<h1>{{ str|capfirst }}</h1> #首字母大写
<h1>{{ str|cut:"llo" }}</h1> #将llo切除
<h1>{{ now_time|date:'Y-m-d H:i:s' }}</h1> #自定义时间格式
<h1>{{ empty_list|default:"Is Null" }}</h1> #如果为False,则显示默认值
<h1>{{ empty_list|default_if_none:"Is None." }}</h1> #如果为none,则显示默认值
<h1>{{ a_tag|safe }}</h1> #将变量中的html加以渲染
三、标签(tag)
- autoescape:将变量中的HTML渲染
{% autoescape off %}
<h1>{{ a_tag }}</h1>
{% endautoescape %}
- if:判断标签
{% if info.age > 18 %}
<h1>{{ info.name }}大于等于18</h1>
{% elif info.age < 18 %}
<h1>{{ info.name }}小于18</h1>
{% else %}
<h1>{{ info.name }}等于18</h1>
{% endif %}
- for:循环标签
{% for name in empty_list %}
<h1>{{ forloop.counter }}.Hello {{ name }}</h1>
{% empty %} #如果是空列表则显示以下HTML
<h1>没有找到哦</h1>
{% endfor %}
forloop.counter
forloop.counter0
forloop.revcounter
forloop.revcounter0
forloop.first 当第一次循环时值为True
- csrf_token:身份认证
<form action="{% url 'login' %}" method="post">
<p>姓名 <input type="text" name="user"></p>
<p>密码 <input type="password" name="pwd"></p>
<p><input type="submit"></p>
{% csrf_token %}
</form>
- with:替换变量名
- verbatim:禁止render渲染
- load:加载标签库
四、自定义filter和tag
- 在app目录下创建templatetags包
- 在templatetags包中创建mytags
from django import template
from django.utils.safestring import mark_safe
register = template.Library()
@register.filter() #只可以传一个参数
def filter_multi(x,y):
return x*y
@register.simple_tag() #simple_tag不限制参数个数,而且不能在控制语句中使用
def simple_tag_multi(x,y,z):
return x*y*z
- 引用方法
{% load mytags %}
<h1>{{ a|filter_multi:b }}</h1>
<h1>{% simple_tag_multi a b %}</h1>
五、继承标签
- 父模板
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
* {
margin: 0;
padding: 0;
}
.nav {
line-height: 40px;
width: 100%;
background: #1f57a5;
color: white;
font-size: 20px;
text-align: center;
}
.left {
width: 20%;
min-height: 600px;
overflow: auto;
background-color: #e1e1e1;
}
.manager {
text-align: center;
padding: 20px 0;
margin: 20px 0;
font-size: 18px;
}
.context {
width: 70%;
min-height: 600px;
}
.left,.context {
float: left;
}
.welcomeinfo {
text-align: center;
}
</style>
</head>
<body>
<div class="outer">
<div class="nav">智掌管理系统</div>
<div class="left">
<div class="home manager"><a href="/backend/">首页</a></div>
<div class="teacher manager"><a href="">教师管理</a></div>
<div class="student manager" ><a href="/student/">学生管理</a></div>
</div>
<div class="context">
{% block context %} #在此定义一个盒子
<h1 class="welcomeinfo">您好,欢迎使用智掌管理系统</h1>
{% endblock %}
</div>
</div>
</body>
</html>
- block模板引用
{% extends "index.html" %}
{% block context %}
{{ block.super }}
<h1 class="welcomeinfo">您好,欢迎使用学生管理系统</h1>
{% for i in stu_list %}
<h2>{{ i }}</h2>
{% endfor %}
{% endblock %}
- include引用
{% extends "index.html" %}
{% load staticfiles %}
{% block context %}
{{ block.super }}
<h1 class="welcomeinfo">您好,欢迎使用学生管理系统</h1>
{% for i in stu_list %}
<h2>{{ i }}</h2>
{% endfor %}
{% include "ad.html" %}
{% endblock %}
191022Django模板的更多相关文章
- Jade模板引擎让你飞
写在前面:现在jade改名成pug了 一.安装 npm install jade 二.基本使用 1.简单使用 p hello jade! 渲染后: <p>hello jade!</p ...
- ABP入门系列(2)——通过模板创建MAP版本项目
一.从官网创建模板项目 进入官网下载模板项目 依次按下图选择: 输入验证码开始下载 下载提示: 二.启动项目 使用VS2015打开项目,还原Nuget包: 设置以Web结尾的项目,设置为启动项目: 打 ...
- CMS模板应用调研问卷
截止目前,已经有数十家网站与我们合作,进行了MIP化改造,在搜索结果页也能看到"闪电标"的出现.除了改造方面的问题,MIP项目组被问到最多的就是:我用了wordpress,我用了织 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- 【原创分享·微信支付】C# MVC 微信支付之微信模板消息推送
微信支付之微信模板消息推送 今天我要跟大家分享的是“模板消息”的推送,这玩意呢,你说用途嘛,那还是真真的牛逼呐.原因在哪?就是因为它是依赖微信生存的呀,所以他能不 ...
- OpenCV模板匹配算法详解
1 理论介绍 模板匹配是在一幅图像中寻找一个特定目标的方法之一,这种方法的原理非常简单,遍历图像中的每一个可能的位置,比较各处与模板是否“相似”,当相似度足够高时,就认为找到了我们的目标.OpenCV ...
- 前端MVC学习总结(一)——MVC概要与angular概要、模板与数据绑定
一.前端MVC概要 1.1.库与框架的区别 框架是一个软件的半成品,在全局范围内给了大的约束.库是工具,在单点上给我们提供功能.框架是依赖库的.AngularJS是框架而jQuery则是库. 1.2. ...
- ThinkPHP+Smarty模板中截取包含中英文混合的字符串乱码的解决方案
好几天没写博客了,其实有好多需要总结的,因为最近一直在忙着做项目,但是困惑了几天的Smarty模板中截取包含中英文混合的字符串乱码的问题,终于解决了,所以记录下来,需要的朋友看一下: 出现乱码的原因: ...
- ThinkPHP 模板substr的截取字符串函数
ThinkPHP 模板substr的截取字符串函数在Common/function.php加上以下代码 /** ** 截取中文字符串 **/ function msubstr($str, $start ...
随机推荐
- Altium Designer 只导出PCB元器件及标号的PDF文件的方法
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明. 作者:struct_mooc 博客地址:https://www.cnblogs.com/stru ...
- thinkjs-定时任务
thinkjs-定时任务 配置 原文文档 定时任务的配置文件为 src/config/crontab.js(多模块项目下配置文件为 src/common/config/crontab.js,也支持在每 ...
- slf4j日志的使用-学习笔记
maven项目: 一.首先在pom.xml文件中添加maven依赖 这是其中一种: <dependency> <groupId>org.slf4j</groupI ...
- SpringBoot之使用Druid连接池以及SQL监控和spring监控
一.引入maven依赖 <dependencies> <dependency> <groupId>org.springframework.boot</grou ...
- less 经典范例 bootstrap 的 less 版本 常用 less 代码
1. bootstrap 的 less 版本 2.less 文件分布 /*! * Bootstrap v3.3.7 (http://getbootstrap.com) * Copyright 2011 ...
- 使用GDB和GEF进行调试
使用GDB进行调试 这是编译ARM二进制文件和使用GDB进行基本调试的简单介绍.在您按照教程进行操作时,您可能需要按照自己的习惯使用ARM程序集.在这种情况下,你要么需要一个备用的ARM设备,或者你只 ...
- 4.flask第三方组件
1.flask-session的使用 在flask中,有一个app.session_interface = SecureCookieSessionInterface(),也就是存session,调用o ...
- 五,pod控制器应用进阶
目录 Pod 资源 标签 给资源打标签 标签选择器 Pod 生命周期 pod状态探测 livenessProbe 状态探测 livenessProbe exec 测试 livenessProbe ht ...
- 加上这几个组件,flask摇身一变是django
写在前面 flask和django作为python中的两大开源框架,各分春秋,各有各自的优点,不能一概而论说哪个好哪个不好.flask框架小而精,适用于快速开发一些小的应用的项目.django大而全, ...
- Fatal Error: Out of memory php内存溢出处理三种方法
有时候我们在运行php程序的时候会发现 Fatal Error: Out of memory 这样的提示,这有可能是程序中用到了大量了变量和对象,导致分配的内存不够用. 修改php.ini文件里的me ...