首页 > 其他分享 >Django的MVT设计模式

Django的MVT设计模式

时间:2024-10-21 11:43:31浏览次数:1  
标签:tasks MVT py 视图 Django Task task django 设计模式

经典的MVC设计模式及其有点

MVC即 Model-View-Controller(模型-视图-控制器) ,是经典的软件开发设计模式

* **Model(模型)** 简而言之即数据模型。模型不是数据本身(比如数据库里的数据),而是抽象的描述数据的构成和逻辑关系。通常模型包括了数据表的各个字段(比如人的年龄和出生日期)和相互关系(单对单,单对多关系等)。Web开发框架会根据模型的定义来自动生成数据表。
* **View(视图)**  主要用于显示数据,用来展示用户可以看到的内容或提供用户可以输入或操作的界面。数据来源于哪里?当然是数据库啦。那么用户输入的数据给谁? 当然是给控制器啦。
* **Controller(控制器)** 应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据(比如增加或更新数据表)

Django是如何遵循MVC设计模式的?

* **Django Model(模型)** 这个与经典MVC模式下的模型Model差不多
* **Django View(视图)** 这个与MVC下的控制器Controller更像。视图不仅负责根据用户请求从数据库读取数据、指定向用户展示数据的方式(网页或json数据), 还可以指定渲染模板并处理用户提交的数据。
* **Django Template(模板)** 这个与经典MVC模式下的视图View一致。模板用来呈现Django view传来的数据,也决定了用户界面的外观。Template里面也包含了表单,可以用来搜集用户的输入内容 

开始演示

创建app应用

python manage.py startapp tasks

注册到项目中

# [项目目录名]/settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'tasks',
]

然后把应用的urls添加到项目的urls中去

# mysite/urls.py

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('tasks/', include('tasks.urls'))
]

创建模型(M)

编辑应用下的models.py 创建Task模型 模型中包含名称name和状态status两个字段。当你使用python manage.py makemigrationspython manage.py migrate 命令Django会自动为你在数据库中创建数据表(默认是sqlite)表名tasks_task

    # tasks/models.py
    
    from django.db import models
    
    class Status(models.TextChoices):
        UNSTARTED = 'u', "Not started yet"
        ONGOING = 'o', "Ongoing"
        FINISHED = 'f', "Finished"
    
    # Task模型
    class Task(models.Model):
        name = models.CharField(verbose_name="Task name", max_length=65, unique=True)
        status = models.CharField(verbose_name="Task status", max_length=1, choices=Status.choices)
    
        def __str__(self):
            return self.name

编写视图并配置路由url(V)

编辑视图views.py 并新增一个视图函数task_list 用于展示任务清单 该视图函数从数据库读取了Task对象列表,指定了渲染模板并向模板传递了数据

# tasks/views.py
from django.shortcuts import render
from .models import Task

# 任务清单
def task_list(request):
    # 从数据库获取Task对象列表
    tasks = Task.objects.all()
    # 指定渲染模板并向模板传递数据
    return render(request, "tasks/task_list.html", { "tasks": tasks,})

配置路由urls.py

# tasks/urls.py
from django.urls import path
from . import views

# namespace
app_name = 'tasks'

urlpatterns = [
    # Retrieve task list
    path('', views.task_list, name='task_list'),
]


这样当用户访问/tasks/时,Django将调用task_list视图函数。这个视图函数将同时与数据库和模板进行交互。

编辑模板(T)

最后我们要创建task_list.html用于展示视图传来的任务列表数据。这个文件的完整路径为tasks/templates/tasks/task_list.html。至于模板为什么放这里,我们后续会专门介绍。Django还提供了自己的模板语言,包括常见的判断和循环,专门用来渲染模板。


# tasks/templates/tasks/task_list.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Task List</title>
</head>
<body>
<h3>Task List</h3>
{% for task in tasks %}
    <p>{{ forloop.counter }}. {{ task.name }} - {{ task.get_status_display }}
    </p>
{% endfor %}
</body>
</html>

当然此时如果你通过浏览器访问/tasks/, 还看不到任何内容,这是因为你的数据表里还没有任何数据。你可以通过django的admin添加或新增task_create视图实现。

标签:tasks,MVT,py,视图,Django,Task,task,django,设计模式
From: https://www.cnblogs.com/helloworld-wc/p/18489146

相关文章

  • 面向对象与设计模式第一课:深入理解OOP
    第三章:面向对象与设计模式第一课:深入理解OOP面向对象编程(OOP)是一种编程范式,它将程序结构视为由对象组成,促进了代码的重用性和可维护性。在这一课中,我们将深入分析OOP的四个基本特性:封装、继承、多态和抽象,并提供相应的示例与实践。1.OOP基本特性1.1封装封装是OOP的核心......
  • 基于django+vue+Vue基于疫苗网站设计与实现【开题报告+程序+论文】-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容1.选题背景-在当前的医疗卫生领域,疫苗接种的管理与组织愈发重要。关于疫苗相关管理系统的研究,现有研究主要以大型医疗系统或特定地区的集中管理......
  • 基于django+vue+Vue基于医院住院床位管理系统【开题报告+程序+论文】-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于医院住院床位管理系统的研究,现有研究多侧重于医院整体信息化管理等方面,专门针对住院床位管理系统的研究较少。在国内外,医院信息化......
  • 基于django+vue+Vue基于养老院管理系统4h85g【开题报告+程序+论文】-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景随着全球老龄化进程的加速,养老院管理问题日益受到关注。在国外,关于养老管理系统的研究起步较早,成果也较多,例如一些发达国家已经建立起......
  • 基于django+vue+Vue基于新生入学报道管理系统3gd10【开题报告+程序+论文】-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于新生入学报道管理系统的研究,现有研究多集中在整体的学校管理系统层面,专门针对新生入学报道这一特殊阶段管理系统的研究较少。在国......
  • 基于django+vue+Vue基于语言的医院病历管理系统【开题报告+程序+论文】-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容选题背景随着信息技术的飞速发展,医疗信息化已成为提升医疗服务质量和效率的重要手段。医院病历管理系统作为医疗信息化的核心组成部分,其重要性日益......
  • 基于django+vue+Vue基于疫苗网站设计与实现【开题报告+程序+论文】-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容选题背景在当前全球公共卫生事件中,疫苗作为预防和控制传染病的重要手段,其重要性日益凸显。关于疫苗的研究和应用在国内外均取得了显著进展,但专门针......
  • 基于django+vue+Vue基于医院住院床位管理系统【开题报告+程序+论文】-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容选题背景医院住院床位管理作为现代医院运营中的关键环节,其效率与准确性直接影响到医疗服务质量和患者满意度。随着医疗技术的不断进步和医疗需求的......
  • 基于django+vue+Vue基于养老院管理系统【开题报告+程序+论文】-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容选题背景随着全球人口老龄化趋势的加剧,养老院作为老年人生活与照顾的重要场所,其管理效率和服务质量直接影响到老年人的生活质量与幸福感。关于养老......
  • 05 设计模式-创造型模式-原型模式
    原型模式(PrototypePattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式之一。这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在......