...
{% elif condiiton2 %}
...
{% else %}
...
{% endif %}
② for 标签
{% for %} 允许在一个序列上迭代 。支持嵌套 。每一次循环中,模板系统会渲染在 {% for %} 和 {% endfor %} 之间的所有内容 。
<ul>
{% for person in list %}
<li>{{ person.name }}</li>
{% endfor %}
</ul>
给标签增加一个 reversed 使得该列表被反向迭代:
{% for person in list %}
...
{% endfor %}
③ ifequal/ifnotequal 标签
{% ifequal %} 标签比较两个值,当他们相等时,显示在 {% ifequal %} 和 {% endifequal %} 之中所有的值 。和 {% if %} 类似,{% ifequal %} 支持可选的 {% else%} 标签 。
{% ifequal person1 person2 %}
<h1>YES</h1>
{% endifequal %}
④ 注释标签
Django 注释使用 {# #} 。
⑤ 过滤器
模板过滤器可以在变量被显示前修改它,过滤器使用管道字符:
{{ name|lower }}大写转换为小写 。
一个过滤器管道的输出又可以作为下一个管道的输入:
{{ name|first|upper }}将第一个元素转化为大写 。
有些过滤器有参数,过滤器的参数跟随冒号之后并总是以双引号包含:
{{ name|truncatewords:"3" }}显示变量的前3个词 。
addslashes:添加反斜杠到任何反斜杠、单引号或者双引号前面 。
date:按指定的格式字符串参数格式化date或datetime对象,如{{ pub_date|date:"F j, Y" }} 。
length:返回变量的长度 。
⑥ include 标签
{% include %} 标签允许在模板中包含其它的模板的内容 。
{% include "test.html" %}
7、Django模型
Django 对各种数据库提供了很好的支持,Django 为数据库提供了统一的调用API,可以根据业务需求选择不同的数据库 。
以MySQL数据库为例,安装 mysql 驱动的命令:sudo pip install mysqlclient 。
1) 数据库配置
在项目的settings.py文件中找到 DATABASES 配置项,将其信息修改为:
DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql', # 或者使用 mysql.connector.django'NAME': 'test','USER': 'test','PASSWORD': 'test123','HOST':'localhost','PORT':'3306',}}这里添加了中文注释,所以需要在settings.py 文件头部添加 # -*- coding: UTF-8 -*- 。
2) 定义模型
① 创建APP:
Django规定,如果要使用模型,必须要创建一个app,使用以下命令创建一个app:python manage.py startapp TestModel 。
② 修改 TestModel/models.py 文件:
from django.db import modelsclass Test(models.Model):ame = models.CharField(max_length=20)类名代表了数据库表名,且继承了models.Model,类里面的字段代表数据表中的字段(name),数据类型则由CharField(相当于varchar)、DateField(相当于datetime),max_length 参数限定长度 。
③ 在settings.py中找到INSTALLED_APPS这一项,添加:'TestModel' 。
④ 在命令行中运行以下命令,创建数据表,表名为应用名_类名(如:TestModel_test):
view plain copy
python manage.py migrate # 创建表结构python manage.py makemigrations TestModel # 让Django知道模型有一些变更python manage.py migrate TestModel # 创建表结构3) 数据库操作
添加database.py文件:
[python] view plain copy
from django.http import HttpResponsefrom TestModel.models import Testdef database(request):test = Test(name='Alice')test.save()return HttpResponse("<p>数据添加成功!</p>")修改 urls.py:
view plain copy
from django.conf.urls import *from . import view,databaseurlpatterns = [url(r'^hello$', view.hello),url(r'^database$', database.database)]启动服务器,并在浏览器访问:127.0.0.1:8000/database 。
① 添加数据
[python] view plain copy
from django.http import HttpResponsefrom TestModel.models import Testdef database(request):test = Test(name='Alice')test.save()return HttpResponse("<p>数据添加成功!</p>")② 获取数据
[python] view plain copy
from django.http import HttpResponsefrom TestModel.models import Testdef database(request):# 初始化response = ""response1 = ""# 通过objects这个模型管理器的all()获得所有数据行,相当于SQL中的SELECT * FROMlist = Test.objects.all()# filter相当于SQL中的WHERE,可设置条件过滤结果response2 = Test.objects.filter(id=1)# 获取单个对象response3 = Test.objects.get(id=1)# 限制返回的数据,相当于SQL中的OFFSET 0 LIMIT 2;Test.objects.order_by('name')[0:2]# 数据排序Test.objects.order_by("id")# 上面的方法可以连锁使用Test.objects.filter(name="Alice").order_by("id")# 输出所有数据for var in list:response1 += var.name + " "response = response1return HttpResponse("<p>" + response + "</p>")
推荐阅读
- 5大Java自动化测试框架
- Centos7环境下快速安装Pyspider WEB爬虫框架和phantomjs浏览器
- ThinkPHP框架的优缺点是什么
- Python网络爬虫之URL去重方法:本地内存,Redis,布隆过滤器
- python 进程、线程、协程对比
- python:教你用爬虫通过代理自动刷网页的浏览量
- python正则表达式re模块的高级用法
- python求解最大子序列问题,子序列可连续或不连续
- 框架分析+环境搭建+实例源码 SSH框架总结
- Python处理session最简单的方法
