Django模板

Posted baoshuang0205

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django模板相关的知识,希望对你有一定的参考价值。

MVC框架和MTV框架

MVC,全名是Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller),具有耦合性低、重用性高、生命周期成本低等优点。

技术分享图片

Django框架的设计模式借鉴了MVC框架的思想,也是分成三部分,来降低各个部分之间的耦合性。

Django框架的不同之处在于它拆分的三部分为:Model(模型)、Template(模板)和View(视图),也就是MTV框架。

Django的MTV模式

        Model(模型):负责业务对象与数据库的对象(ORM)

        Template(模版):负责如何把页面展示给用户

        View(视图):负责业务逻辑,并在适当的时候调用Model和Template

        此外,Django还有一个urls分发器,它的作用是将一个个URL的页面请求分发给不同的view处理,           view再调用相应的Model和Template

Django框架图示

技术分享图片

 

Django模板系统

模板用法之变量.的用法

 

Django模板中只需要记住俩种特殊符号:

{{ }} 和 {% %}

{{ }}表示变量,在模板渲染的时候替换成值,{% %} 标签 表示逻辑相关的操作。

变量

 

{{ 变量名 }}

变量名由字母数字和下划线组成。

点(.)在模板语言中有特殊的含义,用来获取对象的相应属性值。

urls.py

技术分享图片
from django.conf.urls import url
from django.contrib import admin
from app01 import views

urlpatterns = [
    url(r^admin/, admin.site.urls),
    url(r^template_test/,views.template_test),
[
View Code

view中代码:

技术分享图片
class Person:           #定义一个类
            def __init__(self,name,age):
                     self.name=name
                     self.age=age
            def eat (self):
                    return 正在吃草
            def __str__(self):
                   return <Person : {} - {} >.format(self.name,self.age)

def  template_test (request):    #定义一个函数
              string=张张
              age=83
              sex_direction=[小小 , 大大]   #取向
        dic={name : "张张" ,"pwd" : zz}

            p1=Person(小小,17)

           return render(request,"template_test.html" ,
                                    {
                                        " string" : string,
                                        "age" : age,
                                         "sex_direction" : sex_direction ,
                                         "dic" : dic ,
                                         p1 : p1
                                    })
View Code

模板中支持的写法:

技术分享图片
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
      {{string}} 
     <br>
      {{age}}
     <br>               
      {{sex_direction.0}} {{sex_direction.1}}  #.索引就能拿到对应的值
     <br>
      {{dic}}   {{dic.name}}    {{dic.pwd}}
     <br>
      {{dic.keys}}
     <br>
      {{dic.values}}
     <br>
      {{dic.items}}
     <br>
      {{p1}}    {{p1.name}}     {{p1.age}}   {{p1.eat}}
</body>
</html>
View Code

注:当模板系统遇到一个(.)时,会按照如下的顺序去查询:

  1. 在字典中查询
  2. 属性或者方法
  3. 数字索引

模板语法之过滤器 Filters   

翻译为过滤器,用来修改变量的显示结果。

语法: {{ value|filter_name:参数 }}  #参数最多一个

‘|‘左右没有空格没有空格没有空格

default

{{ value|default:"nothing"}}

如果value值没传的话就显示nothing

注:TEMPLATES的OPTIONS可以增加一个选项:string_if_invalid:‘找不到‘,可以替代default的的作用。

技术分享图片

filesizeformat

将值格式化为一个 “人类可读的” 文件尺寸 (例如 ‘13 KB‘, ‘4.1 MB‘, ‘102 bytes‘, 等等)。例如:

{{ value|filesizeformat }}

如果 value 是 123456789,输出将会是 117.7 MB。

add

给变量加参数

lower

upper

title

ljust

rjust

center

length

slice

first

last

join

truncatechars

date

safe

 

以上是关于Django模板的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript 片段在 Django 模板中不起作用

如何在扩展另一个文件的 django 模板中使用带有动态内容的 html 块片段?

Django模板过滤器 - 一行

如何在Django视图中使用for循环返回每次迭代[关闭]

VSCode自定义代码片段——.vue文件的模板

如何使用引导程序和 for 循环在 django 中创建电影片段?