模板路径

在配置文件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. because there was insufficient free space available after evicting expired cache entries

    Tomcat运行的时候哗哗哗的报警告 版本是Tomcat 8.5.15 告警信息关键字如下 because there was insufficient free space available af ...

  2. SSH原理及操作

    1:公钥与私钥(public and private key) 公钥:提供给远程主机进行数据加密的行为 私钥:远程主机收到客户端使用公钥加密数据后,在本地端使用私钥来解密 2:公钥与私钥进行数据传输时 ...

  3. Linux内核分析第九次作业

    理解进程调度时机跟踪分析进程调度与进程切换的过程 一.基础知识 Linux系统的一般执行过程 一般情况:正在运行的用户态进程X切换到运行用户态进程Y的过程 1. 正在运行的用户态进程X 2. 发生中断 ...

  4. Excel技巧--单列变多行

    当上图的单列转变成多行时,可以这么做: 1.在第一行输入A2.A3,向右拖拉第一行: 2.第二行按第一行最右顺序,写下A12,再向右拖拉出第二行: 3.选择这两行,再拖拉出一串连续顺序的多行来: 4. ...

  5. SQL 第一范式、第二范式、第三范式、BCNF范式

    一.第一范式 1NF 要求:每一个分量必须是不可分的数据项. 特点: 1)有主键,且主键不能为空. 2)字段不能再分. 示例:(以下例子 不满足 第一范式) /*学号      年龄        信 ...

  6. Qt配置cmake;运行带参数的程序

    配置cmake编译器,步骤如下: 步骤1:  Qt下新建一个project. 步骤2:  在该project目录下创建一个CMakeLists.txt文件,并按规范编写该文件. Tip: projec ...

  7. win10系统IE浏览器中无法显示Java国际化的问题

    http://jingyan.baidu.com/article/656db918e37914e381249c9f.html?qq-pf-to=pcqq.c2c 自从装上Win10系统后,跟随前些IE ...

  8. 黄聪:用 CSS 实现元素垂直居中,有哪些好的方案?

    1.不知道自己高度和父容器高度的情况下, 利用绝对定位只需要以下三行: parentElement{ position:relative; } childElement{ position: abso ...

  9. 为嵌入式mplayer移植添加ALSA音频驱动(全志V3s荔枝派zero)

    首先准备mplayer和alsa_lib,我的是bulidroot添加后编译自动下载的,版本分别是alsa-lib-1.1.4.1和mplayer-1.3.0. 首先编译alsa_lib: ./con ...

  10. oracle user_tables没有新创建的表的问题

    oracle 新创建表后,在user_tables没有,在user_tab_columns也没有,暂时未找到办法