Django 学习笔记(五)模板标签
关于Django模板标签官方网址https://docs.djangoproject.com/en/1.11/ref/templates/builtins/
1.IF标签
Hello World/views.py
- from django.shortcuts import render
- class Person(object):
- def __init__(self,name,age,sex):
- self.name=name
- self.age=age
- self.sex=sex
- def say(self):
- return "I'm %s." %self.name
- def index(request):
- #传入普通变量
- #传入数据为 html 中的变量:views中的变量
- #return render(request,'index.html',{'title':'Welcome','name':'KeinLee'})
- #传入字典变量
- person = {'name':'Lee','age':20,'sex':'male'}
- #传入列表变量
- book_list =['Python','Java','C']
- #book_list =[]
- #传入对象变量
- #person=Person('Lucky',18,'female')
- return render(request,'index.html',{'title':'Welcome','person':person,'book_list':book_list})
views.py
(1)if ...elif...else...endif
Hello World/temlplates/index.html
- {% if book_list.0 == 'Java' %}
- 第一本书是Java
- {% elif book_list.0 == 'Python' %}
- 第一本书是Python
- {% else %}
- 第一本书是C
- {% endif %}
结果为:第一本书是Python
(2)if...and...or...not...endif
注意:and和or可以同用,但是and的优先级比or高
Hello World/temlplates/index.html
- {% if book_list or person %}
- 存在book_list 或者 person
- {% endif %}
- {% if book_list and person %}
- book_list 和 person都存在
- {% endif %}
- {% if book_list and not person %}
- 存在book_list 不存在person
- {% endif %}
结果为:存在book_list 或者 person、book_list 和 person都存在、(空)
(3)if符号运算(==、!=、>、>=、<=、<、in、not in、is、is not)
if is XX True这个是当且仅当XX为真,这个暂时理解不了
- {% if book_list.0 == 'Python' %}
- 1.第一本书是Python
- {% endif %}
- {% if book_list.0 != 'Python' %}
- 2.第一本书不是Python
- {% endif %}
- {% if person.age <= 20 %}
- 3.这个人的年龄没超过20
- {% else %}
- 4.这个人的年龄超过20
- {% endif %}
- {% if 'Python' in book_list %}
- 5.Python在book_list列表里
- {% endif %}
- {% if 'Py' not in book_list %}
- 6.Py在book_list列表里
- {% endif %}
- {% if book_list.4 is not True %}
- 7.book_list.4不存在
- {% endif %}
- {% if book_list is not None%}
- 8.book_list列表存在
- {% endif %}
结果:1、 3、 5、 6、7、8能够显示
2.For标签
(1)列表for循环
- {% for book in book_list %}
- {{book}}
- {% endfor %}
结果:Python Java C
(2)字典for循环
- {% for k,v in person.items %}
- {{k}}:{{v}}
- {% endfor %}
结果:sex:male name:Lee age:20
(3)for...empty (在views.py中没有定义book_list2)
- {% for book in book_list2 %}
- {{book}}
- {% empty %}
- 没有这个列表或者该列表为空
- {% endfor %}
结果:没有这个列表或者该列表为空
(4)forloop
forloop.counter 循环记数,默认1开始
forloop.counter0 循环记数,从0开始
forloop.revcounter 循环到记数,默认1结束
forloop.revcounter0 循环记数,到0结束
forloop.first 第一次循环bool值为True,一般与if连用
forloop.last 最后一次循环bool值为True,一般与if连用
forloop.parentloop 循环嵌套中对上一层循环的操作
- {% for k in person %}
- {%if forloop.first %}
- 这是第一次循环
- {% elif forloop.last%}
- 这是最后一次循环
- {% else %}
- {{k}}
- {% endif %}
- {% endfor %}
结果:这是第一次循环 name 这是最后一次循环
系列上一章:Django 学习笔记(四)模板变量
系列下一章:Django 学习笔记(六)MySQL配置
Django 学习笔记(五)模板标签的更多相关文章
- Django学习笔记之模板
模板 模板介绍 在之前的章节中,视图函数只是直接返回文本,而在实际生产环境中其实很少这样用,因为实际的页面大多是带有样式的HTML代码,这可以让浏览器渲染出非常漂亮的页面. 目前市面上有非常多的模板系 ...
- Django学习笔记之模板渲染、模板语言、simple_tag、母版子版、静态配置文件
一.首先我们用PyCharm来创建一个Django项目 终端命令:django-admin startproject sitename 图形创建: 这样一个Django项目就创建完成了,上面可以看 ...
- Django学习笔记之URL标签的使用
期初用django 开发应用的时候,完全是在urls.py 中硬编码配置地址,在views.py中HttpResponseRedirect()也是硬编码转向地址,当然在template 中也是一样了, ...
- Shiro学习笔记五(Shiro标签,及通配符)
1.首先是导入标签库 <%@taglib prefix="shiro" uri="http://shiro.apache.org/tags" %> ...
- Django学习笔记(五)—— 表单
疯狂的暑假学习之 Django学习笔记(五)-- 表单 參考:<The Django Book> 第7章 1. HttpRequest对象的信息 request.path ...
- Django 学习笔记(四)模板变量
关于Django模板变量官方网址:https://docs.djangoproject.com/en/1.11/ref/templates/builtins/ 1.传入普通变量 在hello/Hell ...
- Django 学习笔记(三)模板导入
本章内容是将一个html网页放进模板中,并运行服务器将其展现出来. 平台:windows平台下Liunx子系统 目前的目录: hello ├── manage.py ├── hello │ ├── _ ...
- Django 学习笔记(六)MySQL配置
环境:Ubuntu16.4 工具:Python3.5 一.安装MySQL数据库 终端命令: sudo apt-get install mysql-server sudo apt-get install ...
- Django学习笔记(9)—— 开发用户注册与登录系统
一,项目题目: 开发用户注册与登录系统 该项目主要练习使用Django开发一个用户注册与登录的系统,通过这个项目然后巩固自己这段时间所学习的Django知识. 二,项目需求: 开发一个简单的用户登录与 ...
随机推荐
- 【DG】Oracle_Data_Guard官方直译
[DG]Oracle Data Guard官方直译 1 Oracle Data Guard 介绍 Oracle Data Guard概念和管理10g版本2 Oracle Data Guard ...
- 基于 WebRTC 技术的实时通信服务开发实践
随着直播的发展,直播实时互动性变得日益重要.又拍云在 WebRTC 的基础上,凭借多年的开发经验,结合当下实际情况,开发 UPRTC 系统,解决了网络延时.并发量大.客户端解码能力差等问题. WebR ...
- HDOJ2002-计算球体面积
Problem Description 根据输入的半径值,计算球的体积. Input 输入数据有多组,每组占一行,每行包括一个实数,表示球的半径. Output 输出对应的球的体积,对于每组输 ...
- Mac下安装 MongoDB
Mac 下安装 MongoDB 一般有两种方法,一种是通过源码安装,一种是直接使用 homebrew ,个人推荐使用 homebrew ,简单粗暴. 1.安装 homebrew : /usr/bin/ ...
- [BZOJ1500][NOI2005]维修数列---解题报告
Portal Gun:[BZOJ1500][NOI2005]维修数列 有一段时间没写博客了,最近在刚数据结构......各种板子背得简直要起飞,题目也是一大堆做不完,这里就挑一道平衡树的题来写写好了 ...
- WCF Cookie处理
wcf操作cookie看似很简单,如果不对Wcf研究一把还是很难的,基本上无从下手. 这里上一图 上面的结果,岂止是坑爹,简直就是坑爹!!! 废话不多说,直接上代码: cookie读取 var req ...
- C#设计模式(0)-认识设计模式
简介 世界上本没有路,走的人多了也就成了路:世界上本来没有设计模式.用的人多了,也就成了设计模式.所以,我们不是严格按照它的定义去执行,可以根据自己的实际场景.需求去变通.领悟了其中的思想,实现属于自 ...
- keilc 4 编译出现的几个错误…
原文地址:keilc 4 编译出现的几个错误解决作者:黑子 今天安装了keilc4,因为项目用到,所以把遇到的几个编译错误解决方法说说,第一次写东西不知道写啥!! 一 第一个是错误提示 ...
- Spring源码解析——如何阅读源码
最近没什么实质性的工作,正好有点时间,就想学学别人的代码.也看过一点源码,算是有了点阅读的经验,于是下定决心看下spring这种大型的项目的源码,学学它的设计思想. 手码不易,转载请注明:xingoo ...
- java垃圾回收过程
对于年轻代,刚开始创建的对象都是放置在eden区的,而将年轻代分成3个部分,主要是为了生命周期短的对象尽量留在年轻代.当eden区申请不到空间的时候,进行minorGC,把存活的对象拷贝到survio ...