Django | 设计模式与模板层

Django·Programming · 2022-04-15

MVC模式

MVC代表Model-View-Controller(模型-视图-控制器)模式。

  • M-Model模型层,主要用于对数据库层的封装
  • V-View视图层,用于向用户展示结果(What+How)
  • C-Controller控制层,用于处理请求、获得数据、返回结果

Django的MTV模式

MTV代表Model-Template-View(模型-模板-视图)模式。

  • M-Model模型层,负责与数据库交互
  • T-Template模板层,负责呈现内容到浏览器(How)
  • V-View视图层,负责接收请求、获取数据、返回结果(What)

什么是模板

  • 模板是可以根据字典数据动态变化的Html网页
  • 模板可以根据视图中传递的字典数据动态生成对应的HTML页面

Django中如何使用模板-初始化配置

  1. 创建模板文件夹<项目名>/templates
  2. settings.py中修改TEMPLATES配置项
    a. BACKEND:指定模板引擎
    b. DIR8:模板的搜索目录(可以是一个或者多个)
    c. APP_DIRS:是否要再应用中的templates文件夹中搜索模板文件
    d. OPTIONS:有关模板的选项
  3. 在配置项中设置DIRS-'DIRS':[os.path.join(BASE_DIR,'templates')]

Django中如何使用模板-设置视图

方法1 采用loader函数

from django.template import loader
t = loader.get_template('test_html.html')
html = t.render()
return HttpResponse(html)

方法2 采用render函数直接返回,并向template中传递数据

from django.shortcuts import render
dic={'name':'aaa'}
return HttpResponse(request, 'test_html.html', dic)

Django中如何使用模板-变量语法

在模板中使用变量语法,应遵从以下形式:

  • {{ 变量名 }}
  • {{ 变量名.index }}
  • {{ 变量名.key }}
  • {{ 对象.方法 }}
  • {{ 函数名 }}

Django中模板的继承

模板继承可以使父模板的内容重用,子模板直接继承父模板的全部内容并可以覆盖父模板中相应的块,使用语法如下:

在父模板中:

  • 定义父模板中的block块标签
  • 识别出那些在子模块中是允许修改的
  • block标签:在父模板中定义,可以在子模板中覆盖

在子模板中:

  • 继承模板extends标签(写在模板文件的第一行)

    例如{% extends 'base.html %}
  • 子模板重写父模板中的内容块

    {% block block_name %} 子模板块用来覆盖父模板中block_name的内容
    {% endblock block_name %}

关于重写:

  • 不重写,则按照父模板的内容效果显示
  • 重写,则按照重写的内容效果进行显示
  • 注意:模板继承时,服务器端的动态内容无法继承