10 Django的MVC架构之MVC的概念

在上一篇文章中,我们创建了我们的第一个Django项目,并成功运行了开发服务器。在本篇文章中,我们将深入探讨Django的MVC架构中的MVC概念。

MVC概念简介

MVC是“Model-View-Controller”的缩写,指的是一种常用的软件架构模式。它通过将应用程序划分为三个核心部分(模型、视图和控制器),以促进更清晰的代码组织和更好的维护性。

1. 模型(Model)

模型代表应用程序的数据结构和业务逻辑。在Django中,模型通常与数据库的表结构相对应。每个模型通常会定义数据库的字段及其属性。

示例

假设我们正在开发一个博客应用,以下是一个简单的模型示例:

1
2
3
4
5
6
7
8
9
from django.db import models

class Post(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
published_date = models.DateTimeField(auto_now_add=True)

def __str__(self):
return self.title

在这个例子中,Post模型定义了博客文章的标题、内容和发表日期。

2. 视图(View)

视图是用户界面部分,负责展示数据并处理用户的输入。在Django中,视图是一个可以处理HTTP请求并返回HTTP响应的Python函数或类。它通常从模型中获取数据,并将其传递到模板中以便渲染。

示例

继续我们之前的博客示例,一个简单的视图可以是:

1
2
3
4
5
6
from django.shortcuts import render
from .models import Post

def post_list(request):
posts = Post.objects.all() # 从数据库获取所有文章
return render(request, 'blog/post_list.html', {'posts': posts})

在这个视图中,post_list函数从数据库中获取所有的Post对象,并将它们传递给post_list.html模板进行渲染。

3. 控制器(Controller)

在Django中,控制器的角色主要由URL映射和视图共同承担。Django的URL dispatching机制(URL调度)负责将用户请求的URL路径映射到相应的视图。控制器在MVC模式中主要负责协调模型与视图之间的交互。

示例

urls.py中,我们可以定义URL与视图之间的关系:

1
2
3
4
5
6
from django.urls import path
from . import views

urlpatterns = [
path('', views.post_list, name='post_list'),
]

在这个例子中,我们将网站根路径'/'映射到post_list视图。

MVC与MTV的关系

值得注意的是,Django实际采用的是MTV架构模式,其中M(模型)和V(视图)分别对应MVC的模型和视图,而Django中的T(模板)则对应了MVC的视图。这种命名差异是由Django社区提供的,但它们在概念上的作用是相似的。

总结

本文简单介绍了MVC架构的概念,主要涵盖了模型、视图和控制器的角色与职责。我们通过一个博客应用的简单示例,展示了如何定义模型、编写视图和设置URL路由。

在下一篇文章中,我们将深入探讨Django的MTV架构,了解模板的具体作用以及如何在应用中正确渲染数据。感谢你们的耐心阅读,期待下次的学习!

10 Django的MVC架构之MVC的概念

https://zglg.work/django-zero/10/

作者

AI免费学习网(郭震)

发布于

2024-08-10

更新于

2024-08-10

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论