iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >djano-模板层基础知识
  • 829
分享到

djano-模板层基础知识

基础知识模板djano 2023-01-30 22:01:08 829人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

########模板层######## 模板层其实就是templates文件夹里的html文件 其实这里的每个html不是真正意义的上html代码,只有经过模板渲染过后才算的上真正的html页面。 一、模板语言(变量,深度查询,过滤器

########模板层########
模板层其实就是templates文件夹里的html文件
其实这里的每个html不是真正意义的上html代码,只有经过模板渲染过后才算的上真正的html页面。

一、模板语言(变量,深度查询,过滤器,标签)

1、变量
    在Django模板里通过{{ name }} 表示一个变量,name就是一个变量名
    首先我们要明白这个变量是怎么传出来的,
    在视图层:
        return render(request,'index.html',local())
        #local()就把当前视图函数的变量全部传到index.html模板中,这样就不要我们写太多代码了,但是
        #也有缺点,就是把一些不需要渲染的变量也传了过去。
    模板层:
        当程序读到{{开头,一直读到}}结尾,这里会有一个变量值,就会去名称空间里找相应的变量。这其实
        和我们之前写Socket写服务端一样的,读取文件,再用相应的变量去替换掉符合条件的字符串。
    好了好了,说说变量吧,记住一点就行:{{name}}  ----> 相当于在python中执行了print(name)操作
    你记住这个就行了!!!,这就是精髓。下面我就写写伪代码吧,
    name = 'zhuyu'  #视图层定义的变量
    {{ name }}      #在前台页面显示 zhuyu     后面我就不写注释了

    list = [1,2,3,['hello','Word']]
    {{ list }}  --------->  [1,2,3,['hello','word']]

    def run():
        return 'run Go'
    {{ run }}  --------->   'run go'  #这里我说下,在Python中我们打印print(run),显示的函数的内存地址,
                                      #会出现'run go',只能说明模板中执行函数,打印了它的返回值。

    zhuyu = User('zhuyu',19)   #这里是User是一个类
    {{ zhuyu }} -------->   '<app01.views.index.<locals>.People object at 0x0000028D4DDDB240> '
                            #你在python中,打印一个对象,执行__str__,他的返回值就上面这个,所以说,看下面

    {{zhuyu.get_name}}   ----->  'zhuyu '
                                 #这是调用对象的方法,也是执行方法,打印的是它的返回值

    总结:1、{{ 变量名 }}  其实就是执行print操作
         2、假如该变量是一个函数,或者对象的函数属性,就是帮你执行,打印执行后的返回值
         3、不能打印带参数的函数,方法,这里要小心!!!!

2、过滤器
    {{ 'name'|length }}    这是一个参数的过滤器
    {{ 'zhu'|add:'yu' }}   这是两个参数的过滤器

    总结:|前是第一个参数,后面就是过滤器,冒号(:)就是第二个参数,
         记住只能传两个参数,如果你想传多个参数的话,你可以为第二个参数写上指定的格式比如('a:b:c'),然后拿到该参数,也是就一个字符串,进行split(':')操作,这样你就拿到一个列表了,相当于你第二个参数传了三个参数,对不对。其实方法有很多的,看你自己怎么写了。

3、标签
    {% %} ------>  表示一个标签,他是和变量、过滤器是有差距的,看也看得出来。
    for循环:
        {%for foo in foos%}
        {% endfor %}

    if判断:
        {% if %}
        {% endif %}

    with(相当于给一个复杂的变量名赋别名):
        {% with asdasdasdsa as as%}
        {% endwith %}

    总结:1、这些不都不用多说了,学过python,这些再清楚不过了,记住它的语法规定就行了,for循环,if判断,with都和python差不多。对了,for循环里有一个对
       象,forlorp,是不在记不住你就在循环里打印看看是什么就好了
         2、哦哦,还有不是if判断,它判断的条件可以是过滤器,过滤器就是判断它的返回值嘛,但不可以是标签,没有为什么。

4、自定义过滤器,标签
    (1)、首先在app文件中新建一个文件夹(包),名字必须为templatetags
    (2)、在该文件夹中新建py文件,名字随便你取:例如tags.py
    (3)、在py文件中导入模块,并且实例化一个对象,名字必须为reGISter
        from django.template import library
        register = library()
    (4)、继续在该文件中写的函数,过滤器,标签其本质也是一个函数,但是你写的函数必须要有装饰器,这样才能成为过滤器,标签。
        @register.filler(name='add') #这样写这个函数才是一个过滤器,对就是过滤器,name='add',给过滤器命名
        def my_add(value1,value2):
            return value1+value2

        @register.tag('add1')  #这样写该函数才是标签,就是在上面加装饰器
        def add_str(value1,value2,value3):
            return value1+value2+value3

    (5)、上面的步骤,我们只是注册了过滤器,标签,想要使用的话,必须要在模板中导入
        {% load tags %}   #这里的tags就是你新建的py文件
        {{ 'zhuyu'|add:'nb' }}   #这里add就是我之前自定义的过滤器,不要在add  名字和已有的模板标签重名说到重名,我现在有个想法,它到底是执行django自带的过滤器,还是我定义的呢?这肯定是由先后的,自己去试试。
        {% add1 'zhuyu' 'nb' '!'%} #这里这个add1标签必须传多个参数,用空格去区别。

5、对了差点忘了深度查询
    对于列表,字典在python中我们是怎么去取值的呢?
        name = ['zhuyu','zhanghao','daisongbai','wuyang','yangpeng']
        info_dic = {'name':''zhuyu,'age':21}

        取列表的第二个元素: name[1]
        取字典key为name:   info_dic[name]
        
    但是在模板中,是没有[]的,那么我们该怎么去取呢?
    我们同一使用.,千万别看漏了小数点,我们用.去取值
        取列表的第三个元素:  name.3      #这是在模板中记住
        取字典的key为age:   info_dic.age

    深度查询其实很简单,你可以一直.下去。
    

今天就更新结束,哈哈,我只是通过讲话的方式,来记录一些知识点。

 

--结束END--

本文标题: djano-模板层基础知识

本文链接: https://www.lsjlt.com/news/180185.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • djano-模板层基础知识
    ########模板层######## 模板层其实就是templates文件夹里的html文件 其实这里的每个html不是真正意义的上html代码,只有经过模板渲染过后才算的上真正的html页面。 一、模板语言(变量,深度查询,过滤器...
    99+
    2023-01-30
    基础知识 模板 djano
  • C++模板基础知识点有哪些
    这篇文章主要讲解了“C++模板基础知识点有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++模板基础知识点有哪些”吧!引入我们对交换函数Swap已经非常熟悉了,但是我们经常会遇到这样的...
    99+
    2023-06-25
  • django-模板层基础2
    1、模板的导入 {% include 模板名%} 首先在你的的项目中,需要很多地方用到同一个组件(相对于头部,你进行每个页面的切换,网页最上面的头  部不需要改变),那么这样我们可以把那个头部重新写在一个模板中,其他每个...
    99+
    2023-01-30
    模板 基础 django
  • python3基础知识
    字符串截取:利用下标进行截取py_str = 'python'len(py_str)py_str[:3] py_str + '123''python123'py_str * 3'pythonpythonpython' Str将数...
    99+
    2023-01-31
    基础知识
  • python基础知识
    1.注释   1.1.单行注释:以#开头,#右边的有所东西当做说明.   1.2.多行注释:'''   我是多行注释   '''   2.变量   2.1.为了充分的利用内存空间以及更有效率的管理内存,变量是有不同类型的     2.1....
    99+
    2023-01-30
    基础知识 python
  • Python 基础知识
    只是打印出 hello world 肯定是不够的,是吗?你会希望做得比这还要多——你想要输入一些内容,操纵它,然后从中得到一些输出出来的内容。我们可以在 Python 中通过使用变量与常量来实现这一目标,在本章中我们还会学习其它的一些概...
    99+
    2023-01-31
    基础知识 Python
  • 怎样使用Django基础模板搭建自己的知识库
    怎样使用Django基础模板搭建自己的知识库,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。今天给自己定了个小目标,一定要先做出点东西来,要不别回家了,哈哈。当然我可不是瞎说,做...
    99+
    2023-06-04
  • 如何使用Django基础模板优化自己的知识库
    如何使用Django基础模板优化自己的知识库 ,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。我有时候会把文章同步到头条上,发现了一个蛮有意思的现象。公众号里的文...
    99+
    2023-06-04
  • 基础知识—3.12
    1、二叉树: 结点:所有的叶子。 叶子结点:最后一层的叶子数。 性质1:二叉树第i层上的结点数目最多为 2{i-1} (i≥1)。性质2:深度为k的二叉树至多有2{k}-1个结点(k≥1)。性质3:包含n个结点的二叉树的高度至少为log2...
    99+
    2023-01-30
    基础知识
  • Python基础知识之函数,类,模块
    目录1、Function 函数1)定义函数2)参数设置3)全局和局部变量2、Class类1)定义class2)class的功能3)继承4)私有属性和功能5)特殊方法3、Module模...
    99+
    2024-04-02
  • Python可视化matplotlib模块基础知识
    目录1. matplotlib 模块概述 2. matplotlib.pyplot 相关方法 3. matplotlib.pyplot 图表展示 前言: 互联网时代下,在网络中每天都...
    99+
    2024-04-02
  • mysql基础知识-3
    一、mysql修改用户密码方法:    方法一:mysqladmin -u username -h host -p password 'new_password';    方法二:mysql>set password for 'use...
    99+
    2023-01-31
    基础知识 mysql
  • Linux基础知识3
     Linux 命令的语法格式COMMAND options arguments 命令可分为:命令、应用程序、脚本文件三类命令按类型分为:内部命令:即集成在系统内核中的命令外部命令:独立的可执行程序,程序名即为命令名区分内部命令或外部命令可使...
    99+
    2023-01-31
    基础知识 Linux
  • RabbitMQ的基础知识
    目录RabbitMQ1.对MQ的介绍2.RabbitMQ的六种模式 及工作原理3.hello world队列4.工作队列模式5.消息应答机制自动应答手动应答消息自动进行重新入队6.R...
    99+
    2024-04-02
  • Kubernetes(K8S)基础知识
    目录Kubernetes 是什么Kubernetes 集群的组成Kubernetes 结构组件Master 节点kube-apiserveretcdkube-schedulerkub...
    99+
    2024-04-02
  • 【MySQL】基础知识(二)
    MySQL基础知识(二) 文章目录 MySQL基础知识(二)01 表操作1.1 创建表1.2 查看所有表1.3 查看指定表的结构1.4 删除表练习 02 CURD2.1 新增2.1.1 ...
    99+
    2023-09-06
    mysql adb android
  • 一、PyQt基础知识
    一、基础知识 (一)简介 1. 什么是PyQt5 PyQt是基于Digia公司强大的图形程序框架Qt的Python接口,由一组Python模块构成,它是一个创建GUI应用程序的工具包,由Phil Th...
    99+
    2023-09-11
    pyqt qt python
  • python之基础知识
    1、变量: 2、字符串:用   “  ” 或 ' ' 标注的。 3、列表:[  ] 4、del 和 pop 的区别: 判断何时使用:当从列表中删除元素后不再使用,则del,若后续还使用则pop() 例: #del name =["lele...
    99+
    2023-01-30
    基础知识 python
  • Python基础知识(一)
      #Python中开始那个Hello World挺简单的。  #!user/bin/env python3  #这一行是shebang,用以指示用哪个解释器来执行,如果有的话,必须在程序第一行  print("Hello World!")...
    99+
    2023-01-31
    基础知识 Python
  • python的基础知识
    1.python中的注释 ctrl + / 批量注释 块注释: 上下三个双引号中间的部分呢全部被注释" " "这是一个多行注释 " " " python的脚本编写 print('hello pyth...
    99+
    2023-01-31
    基础知识 python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作