zoukankan      html  css  js  c++  java
  • 理解django框架中的MTV与MVC模式

    1.Models:一个抽象层,用来构建和操作你的web应用中的数据,模型是你的数据的唯一的、权威的信息源。它包含你所储存数据的必要字段和行为。通常,每个模型对应数据库中唯一的一张表。

    from django.db import models
    # Create your models here.
    
    class BlogsPost(models.Model):
        title = models.CharField(max_length = 150)
        body = models.TextField()
        timestamp = models.DateTimeField()
    

    创建好模型就好了,剩下的由Django完成。Django会根据模型在数据库中创建一个表

    2.模板(templates):模板层提供了设计友好的语法来展示信息给用户。使用模板方法可以动态地生成HTML。模板包含所需HTML 输出的静态部分,以及一些特殊的语法,描述如何将动态内容插入。

    {% if latest_question_list %}
        <ul>
        {% for question in latest_question_list %}
            <li><a href="/polls/{{ question.id }}/">{{ question.question_text }}</a></li>
        {% endfor %}
        </ul>
    {% else %}
        <p>No polls are available.</p>
    {% endif %}
    

    3.视图(views):用于封装负责处理用户请求及返回响应的逻辑。视图可以看作是前端与数据库的中间人,他会将前端想要的数据从数据库中读出来给前端。他也会将用户要想保存的数据写到数据库。

    #coding=utf-8
    from django.shortcuts import render
    from blog.models import BlogsPost
    from django.shortcuts import render_to_response
    
    # Create your views here.
    def index(request):
        blog_list = BlogsPost.objects.all()
        return render_to_response('index.html',{'blog_list':blog_list})
    

    查询到BlogsPost数据库里的所有数据,赋值给blog_list变量。

    return render_to_response('index.html',{'blog_list':blog_list})

    通过render_to_response() 返回给浏览器一个index.html页面,并且将blog_list变量的值也返回给index.html。

    4.MTV与MVC

    MVC:Model 代表数据存取层,View 代表的是系统中选择显示什么和怎么显示的部分,Controller 指的是系统中根据用户输入并视需要访问模型,以决定使用哪个视图的那部分。

    以下是 Django 中 M、V 和 C 各自的含义:

      M ,数据存取部分,由django数据库层处理,本章要讲述的内容。 
      V ,选择显示哪些数据要显示以及怎样显示的部分,由视图和模板处理。
      C ,根据用户输入委派视图的部分,由 Django 框架根据 URLconf 设置,对给定 URL 调用适当的 Python 函数。
    

    C 是由框架自行处理,而 Django 里更关注的是模型(Model)、模板(Template)和视图(Views), Django 也被称为 MTV 框架 。在 MTV 开发模式中:

     M 代表模型(Model),即数据存取层。 该层处理与数据相关的所有事务: 如何存取、如何验证有效
     T 代表模板(Template),即表现层。 该层处理与表现相关的决定: 如何在页面或其他类型文档中进行显示。
     V 代表视图(View),即业务逻辑层。 该层包含存取模型及调取恰当模板的相关逻辑。 你可以把它看作模型与模板之间的桥梁。
    

      如果你熟悉其它的 MVC Web开发框架,比方说 Ruby on Rails,你可能会认为 Django 视图是控制器,而Django 模板是视图。 很不幸,这是对 MVC 不同诠释所引起的错误认识。 在 Django 对 MVC 的诠释中,视图是用来描述要展现给用户的数据;而不是数据如何展现 。

    参考:
    1.Django文档

    2.Django的是如何工作的

  • 相关阅读:
    Android——继续深造——从安装Android Studio 2.0开始(详)
    PHP——安装wampserver丢失MSVCR110.dll
    Marza Gift for GDC 2016
    Retrieve OpenGL Context from Qt 5.5 on OSX
    Space Time Varying Color Palette
    Screen Space Depth Varying Glow based on Heat Diffusion
    Visualization of Detail Point Set by Local Algebraic Sphere Fitting
    Glass Dragon
    Jump Flood Algorithms for Centroidal Voronoi Tessellation
    京都之行
  • 原文地址:https://www.cnblogs.com/YeChing/p/6339969.html
Copyright © 2011-2022 走看看