美文网首页django
Django-05 MTV和模板层

Django-05 MTV和模板层

作者: JuliusL | 来源:发表于2021-07-10 13:19 被阅读0次

    MVC和MTV

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

    • M 模型层(Model),主要用于对数据库层的封装
    • V 视图层(View),用于想用户展示结果(WHAT+HOW)
    • C 控制(Controller),用于处理请求,获取数据,返回结果(重要)‘
    作用:降低模块间的耦合
    image.png

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

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


      image.png

    什么是模板

    1,模板是可以根据字典数据动态变化的html网页
    2,模板可以根据视图中传递的字典数据动态生成对应的html网页。

    模板配置

    创建模板文件夹<项目名>/templates
    在settings.py中templates配置项
    1,BACKEND:指定模板的引擎
    2,DIRS:模板的搜索目录(可以是一个或多个)
    3,APP_DIRS:是否要在应用中的templates文件夹中搜索模板文件。
    4,OPTIONS:有关模板的选项

    • 配置项中需要修改的部分
      设置DIRS-'DIRS':[os.path.join(BASE_DIR,'templates')],

    模板的加载方式

    方案1-通过loader获取模板,通过HttpResponse进行响应在视图函数中

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

    方案2-使用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,模板中,我们可以用{{变量名}}的语法,调用视图传进来的变量

    {{变量1}}{{变量2}}
    

    相关文章

      网友评论

        本文标题:Django-05 MTV和模板层

        本文链接:https://www.haomeiwen.com/subject/omlcpltx.html