模板路径

在配置文件setting.py中找到TEMPLATES设置来配置。

这是一个设置选项的列表,模板大都包含两项通用设置;两种方式配置模板:

第一种: DIRS 定义一个目录列表,模板引擎按列表顺序搜索这些目录以查找模板源文件。将templates放在主项目目录下.

第二种: APP_DIRS告诉模板引擎是否应该进入每个已安装的应用中查找模板,值为True则模板会去安装了的app下面的templates文件夹查找模板。。所以我们也可以在每个app的里面创建模板目录templates存放模板,这种方式需要将这个app添加到setting.py文件的INSTALLED_APPS列表中.

模板变量

1、语法:{{变量名}}

2、命名由字母和数字以及下划线组成,不能有空格和标点符号。

3、可以使用字典、模型、方法、函数、列表。

4、不要和python或django关键字重名。

原因:如果data是一个字典,那么访问data.items将会访问data这个字典的key名为items的值,而不会访问字典的items方法。

5.变量和查找

点在模板渲染时有特殊的含义。 变量名中点表示查找。 具体一点,当模板系统遇到变量名中的一个点时,它会按下面的顺序进行查找:字典查找,属性查找,列表索引查找。

模板变量的例子:
{# /templates/books/index.html #}
<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>首页</title>
</head>
<body>
  这个变量是字符串对象:{{ books_name}}<br>
  这个变量是函数对象:{{ hello}}<br>
  这个变量是类方法对象:{{ fruits_say}}<br>
  这个变量是类对象:{{ fruits}}<br>
  这个变量是类对象,访问类对象的属性:{{ fruits.name}}<br>
  这个变量是类对象,访问类对象的方法:{{ fruits.say}}<br>
  这个变量是列表对象{{ list }}<br>
  这个变量是列表对象,访问列表的元素{{ list.1 }}<br>
  这个变量是字典对象{{ dict }}<br>
  这个变量是字典对象,访问字典的键{{ dict.a }}<br>
</body>
</html>
# books/views.py
def hello():
   return 'django'

class Fruits:
   def __init__(self, name, color):
       self.name = name
       self.color = color
   def say(self):
       return 'HAHAHAHA'  
   
ap = Fruits('apple','red')
ls = ['x','y','z']
dc = {'a':1,'b':2}
from django.shortcuts import render
def index_5(request,bn):
   return render(request,'books/index.html',
                 context={'books_name':'python',#字符串
                          'hello':hello,        # 函数
                          'fruits_say':ap.say,  # 方法
                          'fruits':ap,          # 类对象
                          'list':ls,            # 列表
                          'dict':dc,            # 字典
                          })

Django模板过滤器

知识点:

  1. 基本概念

  2. 常用的过滤器

  3. 过滤器例子

  4. 关于自动转义

模板过滤器

作用:对变量进行过滤。在真正渲染出来之前,过滤器会根据功能处理好变量,然后得出结果后再替换掉原来的变量展示出来。

语法:{{fruits|lower}}

管道符号进行链式调用,比如实现一个功能,先把所有字符变成小写,把第一个字符转换成大写。

语法:{{fruits|lower|capfirst}}

使用参数:过滤器可以使用参数,在过滤器名称后面使用冒号”:”再加上参数,比如要把一个字符串中所有的空格去掉,则可以使用cut过滤器,

语法如下: {{fruits|cut:" "}}注意:使用参数的时候,冒号和参数之间不能有任何空格,一定要紧挨着。

过滤器参数,可以使用变量.字符串相加,数字相加,列表相加,如果失败,将会返回一个空字符串。

Django常用的过滤器

1、 add :字符串相加,数字相加,列表相加,如果失败,将会返回一个空字符串。
2、default:提供一个默认值,在这个值被django认为是False的时候使用。比如:空字符串、None。区别于default_if_none,这个只有在变量为None的时候才使用默认值。
3、first:返回列表中的第一个值。
4、last:返回列表中的最后一个值。
5、date:格式化日期和时间。
6、time:格式化时间。
7、join:跟python中的join一样的用法。
8、length:返回字符串或者是数组的长度。
9、length_is:字符串或者是数组的长度是否是指定的值。
10、lower:把所有字符串都编程小写。
11、truncatechars:根据后面给的参数,截断字符,如果超过了用…表示。
12、truncatewords:同truncatechars,这个是以一个单词为单位进行截断。
以上两个有xxx_html类型的,针对html,截断标签中的字符,而不会截断标签。
13、capfirst:首字母大写。
14、slice:切割列表。用法跟python中的切片操作是一样的,区间是前闭合后开放。
15、striptags:去掉所有的html标签。
16、safe:关闭变量的自动转义
17、floatformat:浮点数格式化。
date和time过滤器格式
Y:四位数的年。如:1999
y:两位数的年。如:99
m:两位数的月。如:01,09
n:一位数的月。如:1,9,12
d:两位数的日。如:01,09,31
j:一位数的日。如:1,9,31
g:12小时制的一位数的小时。如:1,9,12
G:24小时制的一位数小时。如:0,8,23
h:12小时制的两位数的小时。如:01,09,12
H:24小时制的两位数的小时。如:01,13,24
i:分钟。从00-59
s:秒。从00-59
过滤器例子:

新建一个名为movie的APP.

{# /templates/movie/index22.html #}
<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>home</title>
</head>
<body>
  这是没做处理的变量:{{ test }}<br>
  这是设置了默认值的变量:{{ xx|default:'xxxxxx' }}<br>
  这是设置了只有为None时才使用默认值的变量:{{ xx|default_if_none:'xxxxxx' }}<br>
  这是变为小写后的变量:{{ test|lower }}<br>
  这是先变成小写再将首字母大写后的变量:{{ test|lower|capfirst}}<br>
  这是两个数字变量相加:{{ num1|add:num2 }}<br>
  这是两个字符串变量相加:{{ test|add:xx }}<br>
  这是列表变量的第一个元素:{{ list|first }}<br>
  这是列表变量的最后一个元素:{{ list|last }}<br>
  这是默认的data日期时间格式:{{ now|date }}<br>
  这是默认的time时间格式:{{ now|time }}<br>
  这是data过滤器的年月日24小时制时间格式:{{ now|date:'Y/m/d/H:i:s ' }}<br>
  这是time过滤器的年月日12小时制时间格式:{{ now|time:'h:i:s ' }}<br>
  这是字符串的join方法:{{ ls|join:'xxx' }}<br>
  这是字符串的长度方法:{{ test|length }}<br>
  这是列表的长度是否长度为4:{{ list|length_is:4 }}<br>
  这是字符串只显示4个字符,其余省略(占3位):{{ test|truncatechars:7 }}<br>
  这是字符串只显示2个单词,其余省略(不占位):{{ test|truncatewords:2 }}<br>
  这是字符串切片:{{ test|slice:'1:4' }}<br>
  这是列表切片:{{ list|slice:':2' }}<br>
  这是含html标签的字符串:{{ html }}<br>
  这是去掉字符串中的html标签:{{ html|striptags }}<br>
  这是关掉自动转义,使字符串中html标签生效:{{ html|safe }}<br>
  这是没做处理的小数:{{ float }}<br>
  这是保留了一位小数:{{ float|floatformat }}<br>
  这是保留了两位位小数:{{ float|floatformat:'2' }}<br>  
</body>
</html>
# movie/views.py
from django.shortcuts import render
from datetime import datetime

ls = ['x','y','z']
def hello(request):
   test = 'THIS IS A LIST!'
   return render(request,'movie/home.html',
                 context={'test':test,
                          'xx':'',
                          'num1':1,
                          'num2':2,
                          'list':ls,
                          'now':datetime.now,
                          'html':'<h1>hello django!!!</h1>',
                          'float':3.1415926,
                          })
关于自动转义
什么是自动转义?
自动转义是将变量的一些特殊字符,比如左箭头(<)、右箭头(>)转义成html代码,这样做的目的是为了处理一些不安全的变量。
<:转义成&lt;
>:转义成&gt;
‘:转义成'
“:转义成&quot;
&:转义成&amp;

练习:

模板变量和过滤器的例子:
路由文件:urls.py

视图文件:vip.py

Html文件:index.html

浏览器的结果:

DJango 基础 (3)的更多相关文章

  1. Python之路-(js正则表达式、前端页面的模板套用、Django基础)

    js正则表达式 前端页面的模板套用 Django基础 js正则表达式: 1.定义正则表达式 /.../  用于定义正则表达式 /.../g 表示全局匹配 /.../i 表示不区分大小写 /.../m ...

  2. Django 基础教程

    Django 基础教程 这是第一篇 Django 简介 »  Django 是由 Python 开发的一个免费的开源网站框架,可以用于快速搭建高性能,优雅的网站! 你一定可以学会,Django 很简单 ...

  3. python的django基础篇

    一.Django基础 Django 是用Python开发的一个免费开源的Web框架,可以用于快速搭建高性能,优雅的网站! Django的特点: 强大的数据库功能:拥有强大的数据库操作接口(QueryS ...

  4. Python学习(二十六)—— Django基础一

    转载自:http://www.cnblogs.com/liwenzhou/p/8258992.html 一.Web框架本质 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的 ...

  5. Django基础(一)

    Django基础(一) 知识预览 Django基本命令 二 路由配置系统(URLconf) 三 编写视图 四 Template 五 数据库与ORM admin的配置 一 什么是web框架? 框架,即f ...

  6. python3之Django基础篇

    一.Django基础 Django 是用Python开发的一个免费开源的Web框架,可以用于快速搭建高性能,优雅的网站! Django的特点: 强大的数据库功能:拥有强大的数据库操作接口(QueryS ...

  7. DJango 基础 (1)

    django基础 知识点: 基本认知 工具准备 新建项目 目录及文件说明 开发服务器 创建视图函数 新建应用(app) 1.基本认知 Django是用Python开发的一个免费开源的Web框架,可以用 ...

  8. Django基础和基本使用

    Django基础 Django是Python下的一款著名的Web框架 框架 任何语言进入到高级部分时,会有认证.session.http.连接数据库等等功能操作,没有框架时需要自己实现 框架 是整个或 ...

  9. {Django基础十之Form和ModelForm组件}一 Form介绍 二 Form常用字段和插件 三 From所有内置字段 四 字段校验 五 Hook钩子方法 六 进阶补充 七 ModelForm

    Django基础十之Form和ModelForm组件 本节目录 一 Form介绍 二 Form常用字段和插件 三 From所有内置字段 四 字段校验 五 Hook钩子方法 六 进阶补充 七 Model ...

  10. {Django基础九之中间件} 一 前戏 二 中间件介绍 三 自定义中间件 四 中间件的执行流程 五 中间件版登陆认证

    Django基础九之中间件 本节目录 一 前戏 二 中间件介绍 三 自定义中间件 四 中间件的执行流程 五 中间件版登陆认证 六 xxx 七 xxx 八 xxx 一 前戏 我们在前面的课程中已经学会了 ...

随机推荐

  1. quartz Cron表达式解读

    CronTrigger CronTriggers往往比SimpleTrigger更有用,如果您需要基于日历的概念,而非SimpleTrigger完全指定的时间间隔,复发的发射工作的时间表. CronT ...

  2. Centos6.8 搭建Nginx服务器

    Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器,其特点是占有内存少,并发能力强,业界内的评价一直很不错,反正用过的都说好,虽然我还 ...

  3. EXCEL自动撤销合并单元格并填充相应内容(转帖)

    若EXCEL工作表有很多合并的单元格,要将所有合并的单元格撤销,并填充撤销合并前显示的内容,这是一项很繁琐且容易出错的工作.但可通过宏程序可轻松准确地搞定,方法如下: 一.实现该功能的Excel宏程序 ...

  4. 开机自启动 centos 7

    开机自启动,写入必要的命令即可.vim /etc/rc.d/rc.local

  5. reids高可用(灾难备份-持久化)

    java缓存存放到内存之中,当服务器重启以后,内存的数据将丢失,而reids作为缓存,重启reids以后 数据是不是也会丢失,redis服务器重启以后数据也不会丢失,这个是redis提供了持久化的功能 ...

  6. Python【每日一问】04

    问:a =  [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],求出列表a中所有奇数并构造新列表 答: 利用列表的元素下标遍历列表 a = [1, 2, 3, 4, 5, 6, 7, 8 ...

  7. Lepus监控之SQLServer配置(后续整理)

    1.安装pymssql模块 1-1.环境准备: 1-1-1.unixODBC安装 yum install unixODBC unixODBC-devel -y 1-1-2.freetds安装下载 fr ...

  8. SAS 删除数据和对缺失值处理代码程序

    %INCLUDE '00@HEADER.SAS'; %LET dir=..\04@Model;LIBNAME cc "&dir"; %MACRO ModelVariable ...

  9. 虚拟机克隆之后,网卡名称从eth0变成eth1之后的解决办法

    使用VMware安装了CentOS虚拟机,克隆之后使用service network restart指令来重新启动网络服务时,会看到有eth0网卡不存在的提示.出现这种现象的原因是,很多Linux d ...

  10. (整理)MySQL_REHL6.5 MySQL5.5 中文支持问题

    1 查看字符集命令 SHOW VARIABLES LIKE ‘character%’; 2 修改my.cnf文件中来实现中文支持 2.1 复制my.cnf 安装结束后,etc目录下并没有my.cnf文 ...