templates 模板层

1.模板简介

DTL:django模板语言

核心:

变量{{}}

标签{% %}

render 渲染页面,可以通过locals()将函数的私有属性

views文件下内容

def index(request):
    age = 18
    name = "lqz"
    dic = {‘name‘:‘msj‘,"age":25,‘hobbies‘:[‘paly‘,‘game‘]}
    li1 = [18,‘lqz‘,‘ppp‘,123]

    class Person:
        def __init__(self,name):
            self.name = name
        def test(self):
            print(‘test‘)
            return ‘test‘
        @classmethod
        def test_classmethod(cls):
            print(‘类方法‘)
            return ‘类方法‘

        @staticmethod
        def staticmethod_test():
            print("静态方法")
            return ‘静态方法‘

        def __str__(self):
            return ‘Person‘

    lqz= Person(‘lqz‘)
    egon = Person(‘egon‘)
    person_list = [lqz,egon]

    def aaa():
        return ‘aaaaaaa‘

    bol1 = False
    bol2 = []
    bol3 = [1,]

    file_size = 10240

    ctime = datetime.datetime.now()

    new_name= ‘abcdefghijk‘

    new_words = "you will have a good day"

    a = ‘<a href="http://www.baidu..com">点击连接</a>‘

    return render(request,‘index.html‘,locals())
#locals(),将所有的index属性的作为参数传给模板变量

2.模板语法之变量

变量渲染:{{}}

变量深度查询:{{变量。索引/key/方法}}

<h2>基本的变量解析使用的两个{}的用法+变量名</h2>
<p>{{ age }}</p>
<p>{{ name }}</p>
<p>{{ dic }}</p>
<p>{{ li1 }}</p>
<h2>变量深度查询:变量.索引/key值/方法</h2>
<p>{{ dic.name }}</p>
<p>{{ dic.hobbies }}</p>
<p>{{ li1.0 }}</p>
<p>{{ li1.1 }}</p>
<p>{{ dic.hobbies.1 }}</p>
<h3>方法的调用,对象方法</h3>
<p>{{ person_list.1.test }}</p>
<h3>在views,使用直接向变量使用就可调用</h3>
<p>{{ aaa }}</p>

3模板之过滤器

变量之过滤器(是个函数)

{{age| add:参数}}

add

<p>age| add:2 {{ age| add:2 }}</p>

length

<p>name|length {{ name|length }}</p>

default

<h3>default 简单的判断,当前一个变量为空或False的时候,那么返回default 后面的内容,否则返回原来的内容</h3>
<p>{{ bol1|default:‘假的‘ }}</p>
<p>{{ bol2|default:‘空的‘ }}</p>
<p>{{ bol3|default:‘存在‘ }}</p>

filesizeformat

<h3>filesizeformat 将数字装换数据大小</h3>
<p>file_size|filesizeformat {{ file_size|filesizeformat }}</p>

date

<h3>date:"加上格式"来创建内容</h3>
<p>{{ ctime }}</p>
<p>{{ ctime|date:‘Y-m-d‘ }}</p>

slice

<h3>slice:"开始索引,结束索引" 切片</h3>
<p>new_name|slice:‘2:-1‘ {{ new_name|slice:‘2:-1‘ }}</p>

truncatechars

truncatewords

<h3>truncatechars 省略字符 ...也算做字符长度</h3>
<p>new_name|truncatechars:6{{ new_name|truncatechars:6 }}</p>
<h3>truncatewords 省略单词 ...不算做单词长度</h3>
<p>new_words|truncatewords:3{{ new_words|truncatewords:3 }}</p>

safe

<h3>有后台的连接的字符串的能够</h3>
<a href="http://www.baidu..com">点击连接</a>
<p>正常,不用safe {{ a }}</p>
<p>a|safe {{ a|safe }}</p>

4.模板之标签

-语法:{% %} -foo是一个可迭代对象

for标签循环

<h2>模板标签主要作用:流程控制或一定程度的处理,可以接受多个参数</h2>
<h3>for模板标签的基本使用 for li in li1</h3>
{% for li in li1 %}
    <p>{{ li}}</p>
{% endfor %}
<h3>反向循环 for li in li1 reversed </h3>
{% for li in li1 reversed %}
    <p>{{ li}}</p>
{% endfor %}

forloop用查看循环内容的信息

<h3>forloop只能在for循环中使用,可以获得一系列的数据,包括上级循环的信息,本次循环的位置,是否是开头,是否是结尾等</h3>
{% for li in li1 %}
    {{ forloop }}
    <p>{{ li}}</p>
{% endfor %}
<h3>结果如下:{‘parentloop‘: {}, ‘counter0‘: 0, ‘counter‘: 1, ‘revcounter‘: 4, ‘revcounter0‘: 3, ‘first‘: True, ‘last‘: False}</h3>
<p>parentloop:父级信息</p>
<p>counter0:从0计数索引</p>
<p>counter:从1计数索引</p>
<p>revcounter:反向从1计数索引</p>
<p>revcounter0:反向从0计数索引</p>
<p>first:是第一位?</p>
<p>last:是最后一位吗?</p>

empty标签在空循环的情况下执行

<h3>empty标签:空循环则执行下面的内容,也必须在for循环总才可生效</h3>

{% for foo in bol2 %}
    {{ foo }}
    {% empty %}
    <p>你的循环为空循环</p>

{% endfor %}

if elif else分支结构

<h3>if else elif 标签的使用</h3>
{% if age < 10 %}
    <p>年龄小于10岁</p>
    {% elif age < 20 %}
    <p>年龄在10-20</p>
    {% else %}
    <p>年龄>20</p>

{% endif %}

对于较长的变量可以使用with标签

<h3>with标签 起别名</h3>
{% with person_list.1 as a %}
    {{ a }}

{% endwith %}

5.自定义过滤器和自定义标签

1、确认在settings文件的设置,

INSTALLED_APPS = [
    ‘django.contrib.admin‘,
    ‘django.contrib.auth‘,
    ‘django.contrib.contenttypes‘,
    ‘django.contrib.sessions‘,
    ‘django.contrib.messages‘,
    ‘django.contrib.staticfiles‘,
    ‘app01.apps.App01Config‘,
]

2、在app01文件夹下创建python directory 包(固定名称 templatetags)

3.在包下创建py文件,用于自定义过滤器和标签

4.导入

from django.template import Library
register = Library()#固定格式

过滤器

@register.filter(name ="myadd")
def my_add(a,b):
    return a+b

标签

@register.simple_tag(name=‘addd‘)
def tag_add(a,b,c):
    return a+b+c

5.模板中使用

{% load my_tags %}
<!--导入过滤器和标签-->
{{ age|myadd:5 }}
<!--正常过滤器的使用-->

<p>{% addd 1 2 3 %}</p>
<!--正常标签的使用-->

7 标签和过滤器的区别: 1 标签可以传多个参数,过滤器最多只能传2个 2 使用过滤器{{ }} 标签使用:{% %} 3 重点:过滤器可以放在if判断后,标签不能放在if判断后

原文地址:https://www.cnblogs.com/msj513/p/10252304.html

时间: 2024-11-04 13:54:48

templates 模板层的相关文章

Django基础之视图层(views.py)和模板层

目录 Django基础之视图层(views.py)和模板层 视图层 JsonResponse对象 form表单上传文件 FBV与CBV 即CBV源码分析 django settings源码分析及实际应用 模板层 模板传值 过滤器( | ) 常用内置过滤器 其他过滤器(了解) 标签 if判断 for循环 with标签 csrf_token标签 自定义过滤器和标签 自定义过滤器 自定义标签 自定义过滤器和标签的区别 模板的继承 模板的导入 Django基础之视图层(views.py)和模板层 视图层

1126 视图层与模板层

目录 昨日内容回顾 一. 视图层 路由配置主页与404 1. 三大板斧 HTTPresponse render redirect 2. JsonResponse对象 基础 json转码 使用JsonResponse直接return safe序列化字典之外 3. FBV与CBV 定义 CBV 装饰器 4. request对象 二. 模板层 1. 常用语法 2. 变量 3. 模板传值 方法locals() 类型 函数 类 4. 过滤器| 定义 语法 常见内置filter 使用 前后端的取消转义 5.

053.Python前端Django框架模板层

模板层 一 模板语法之变量 在 Django 模板中遍历复杂数据结构的关键是句点字符, 语法: {{ var_name }} [[email protected] mysite]# cat app01/urls.py from django.urls import path,re_path from . import views urlpatterns = [ path("test/",views.test1,name="test1"), path("te

python--Django之模板层(template)

1.模板层的功能 为了更有逻辑的将数据库中的数据渲染到模板中. 2.模板语法: {{var_name}} #渲染变量用的 {% url %}   #渲染标签用的 3.变量的渲染 例子: def index(request): import datetime s="hello" l=[111,222,333] # 列表 dic={"name":"yuan","age":18} # 字典 date = datetime.date(

django——模板层

每一个Web框架都需要一种很便利的方法用于动态生成HTML页面. 最常见的做法是使用模板. 模板包含所需HTML页面的静态部分,以及一些特殊的模版语法,用于将动态内容插入静态部分. 说白了,模板层就是如何往HTML文件中填入动态内容的系统. 1. 模板的由来 你可能已经注意到我们在例子视图中返回文本的方式有点特别. 也就是说,HTML被直接硬编码在 Python代码之中. def current_datetime(request): now = datetime.datetime.now() h

Django -- 7.模板层

模板层 我们在例子视图中返回文本的方式有点特别. 也就是说,HTML被直接硬编码在 Python代码之中. def current_datetime(request): now = datetime.datetime.now() html = "<html><body>It is now %s.</body></html>" % now return HttpResponse(html) 尽管这种技术便于解释视图是如何工作的,但直接将HT

python测试开发django-2.templates模板与html页

前言 Django 中的视图的概念是一类具有相同功能和模板的网页的集合.通俗一点来说,就是你平常打开浏览器,看到浏览器窗口展示出来的页面内容,那就是视图. 前面一章通过浏览器访问http://127.0.0.1:8000能在页面上展示出hello world的纯文本内容,通常我们打开浏览器页面,展示的是一个html页面,本篇讲下如何打开html页面. 新建应用 上一篇通过"django-admin startproject helloworld"是创建项目,一个项目下可以有多个应用(a

Django(七)—— 模板层:变量、过滤器、标签、自定义标签和过滤器

模板层:变量.过滤器.标签.自定义标签和过滤器 将页面的设计和Python的代码分离开会更干净简洁更容易维护. 我们可以使用 Django的 模板系统 (Template System)来实现这种模式 # django模板修改的视图函数 def current_time(req): from django.template import Template,Context now=datetime.datetime.now() t=Template('<html><body>现在时刻

DJANGO入门系列之(模板层的简单介绍和视图层的扫尾)

昨日回顾:1 虚拟环境 -1 pycharm里创建 -2 用命令串讲2 视图层: 1 Request对象---GET,POST,method,body,FILES,META,path(只是路径),get_full_path(拿到全路径,带数据), 2 HttpResponse对象--->render,redirect,HttpResponse,JsonResponse(返回json格式) 3 反向解析--->在视图层:本质为了去除地址,重定向来用;在模板层:取出地址,为了发请求来用 4 Jso