一、MVC和MTV

1.1. MVC

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

  • M模型层(Model),主要用于对数据库层的封装

  • V视图层(View),用于向用户展示结果(WHAT + HOW)

  • C控制(Controller),用于处理请求、获取数据、返回结果(重要)

作用:降低模块间的耦合度(解耦)

1.2. MTV

Django的MTV设计模式

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

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

作用:降低模块间的耦合度(解耦)

1.3. MTV - 诞生记

二、模板层

2.1. 什么是模板

  1. 模板是可以根据字典数据动态变化的HTML界面
  2. 模板可以根据视图中传递的字典数据动态生成相应的HTML网页。

2.2. 模板配置

  1. 创建模板文件夹<项目名>/templates

  2. 在setting.py中TEMPLATES配置项

    • BACKEND:指定模板引擎
    • DIRS:模板的搜索目录(一个或多个)
    • APP_DIRS:是否要在应用的templates文件夹中搜索模板文件
    • OPTIONS:有关模板的选项
  3. 配置项中需要修改部分

    设置DIRS — ‘DIRS’:[os.path.join(BASE_DIR,‘templates’)]

  4. 效果

    2.3. 模板的加载方式

    1. 方案一:通过loader获取模板,然后通过HttpResponse进行响应

      在视图函数中

      from django.template import loader
      # 1. 通过loader加载模板
      t = loader.get_template("模板文件名")
      # 2. 将t转换成HTML字符串
      html = t.render(字典数据)
      # 3. 用响应对象将转换的字符串内容返回给浏览器
      return HttpResponse(html)
      

  5. 方案二:使用render()直接加载并响应模板

    在视图函数中

    from django.shortcuts import render
    return render(request,'模板文件名',字典数据)
    

三、视图层与模板层之间的交互

  1. 视图函数中可以将Python变量封装到字典中传递到模板。

    样例:

    def xxx_view(request):dic = {"变量1":"值1","变量2":"值2",}return render(request,'xxx.html',dic)
    
  2. 模板层中,可以使用{{变量名}}的语法调用视图传递来的变量


07. Django基础:Django的设计模式及模板层相关推荐

  1. Django - 设计模式及模板层

    MVC和MTV MVC = Model - View - Controller (模型 - 视图 - 控制器)模式 M层主要用于对数据库的封装 V层主要用于向用户展示结果 C层用于处理请求.获取数据. ...

  2. Django基础--Django基本命令、路由配置系统(URLconf)、编写视图、Template、数据库与ORM...

    web框架 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构. 使用框架可以帮你快速开发特定的系统. 简单地说,就是你用别人搭建好的舞台来做表演. 尝试搭建一个简单 ...

  3. Django基础---Web框架、URL路由、视图函数、模板系统

    文章目录 Django基础 Django基础---Web框架 MVC和MTV框架 MVC MTV Django下载与安装 基于Django实现一个简单的示例 get请求获取数据 post请求获取数据 ...

  4. django基础入门之搭建博客系统

    Django基础 Django采用了MVC的软件设计模式,即模型M,视图V和控制器C. 安装django: pip install django=版本 新建一个目录文件进入cmd   启动一个项目 d ...

  5. Django基础(11): 表单集合Formset的高级用法详解

    Formset(表单集)是多个表单的集合.Formset在Web开发中应用很普遍,它可以让用户在同一个页面上提交多张表单,一键添加多个数据,比如一个页面上添加多个用户信息.今天小编我就介绍下Djang ...

  6. ajax调用api改表格数据库,【django基础】django接口 异步ajax请求 导出数据库成excel表(包裹前端后端)...

    py文件: from django.utils.http import urlquote from rest_framework.views import APIView from django.sh ...

  7. Django基础(35): 全局上下文处理器(Context Processors)详解及如何自定义模板上下文处理器...

    Django的Context Processors的中文名字有很多种,有人翻译成文本处理器,也有人翻译成上下文处理器.小编最喜欢的翻译是全局上下文处理器,因为它的主要作用就是向模板传递需要全局使用的变 ...

  8. 学一点django基础

    学一点Django基础 目录 文章目录 目录 一.Django框架的介绍 Django的安装 Django框架开发 创建项目的指令 Django项目的目录结构 URL 介绍 视图函数(view) Dj ...

  9. Django基础教程

    一.Django基础与设计模型 1.Django是什么? Django 是用 Python 开发的一个免费开源的 Web 框架,可以用于快速搭建高性能.优雅的网站,Django 提供了许多网站后台开发 ...

  10. Django(10)-模板层的变量和标签

    Django(1)-简介 Django(2)-创建项目及默认项目目录结构介绍 Django(3)-配置文件详解 Django(4)-URL和视图 Django(5)-路由配置实例 Django(6)- ...

最新文章

  1. 解决win2003下IIS中建立ASP网站出现500内部错误的方法(BUG)
  2. Codeforces Round #570 (Div. 3)
  3. 绘制机械图c语言编程,求用C语言绘制机械三视图程序?
  4. 这些明星日入斗金,为什么还要贷款?
  5. 使用IntelliJ书签
  6. [Node.js] 模块化 -- 爬虫
  7. vue中进度条写法_vue实现简单loading进度条
  8. 软件项目管理原则谈-转自51testing
  9. Linux下创建和删除软、硬链接(ln)
  10. 电脑同时安装python2和3_电脑上同时安装Python2和Python3
  11. 计算机科技的主题,科技感十足的电脑桌面,私藏多年,60多个主题和皮肤统统给大家...
  12. CentOS7 原生 yum 源修改为阿里 yum 源
  13. ureport 显示html,UReport2 与业务结合
  14. java redis教程视频_2020年Java视频教程-Redis全集
  15. matlab距离平方和公式推导,求助高手,用matlab求两幅图像平方和再开根号公式怎样表达?...
  16. 『学习资料推荐』百家讲坛中国历史音频珍藏版
  17. Python的Excel/Word库
  18. 一、科里奥利质量流量计
  19. Git 工具 - 储藏(Stashing) git stash 暂存现在工作区的内容
  20. 西门子1200PLC模拟量测温案例1

热门文章

  1. 77. PHP 文件读取
  2. 7. JavaScript RegExp 对象
  3. java如果目录不存在则创建目录_java – 创建一个目录,如果它不存在,然后再创建该目录中的文件...
  4. 机器学习数据特征归一化的目的及方式
  5. VS2017 无法使用XXX附加到应用程序
  6. 解决IIS无法启动w3svc
  7. 【Eclipse】Eclipse-Build-缓慢-卡住
  8. [转]Using TRY...CATCH in Transact-SQL
  9. bzoj 1047 理想的正方形
  10. flask+uswgi+nginx+python3.6的venv发布网站ubuntu14.04