关于Django中的MVC模型进行图解
首先
我将整理一下Django的处理流程,以便于那些对Django没有接触过的人简单理解。
MVC模型是什么?
MVC模型由模型(Model)、视图(View)、控制器(Controller)这三个元素组成。
要素役割Modelデータベースやファイルなどのデータを管理する役割を持ちます。データの取得や更新、保存などの処理を行います。Viewユーザーが見ることができる画面を表示する役割を持ちます。HTML、CSS、JavaScriptなどを使って画面を構成します。Controllerユーザーからの入力を処理し、ModelとViewを制御する役割を持ちます。Viewからの入力を受け取り、Modelにデータを要求したり、Viewを更新したりします。
以这种方式,MVC模型将应用程序分为三个部分,并且每个部分都承担着特定的角色。通过这种分离,预期可以提高应用程序的可维护性和可扩展性,并且提高开发效率。
关于Django应用程序中的MVC模型
以下是包括脚本名称在内的表格。
要素スクリプト名役割Modelmodels.pyアプリケーション内のデータを管理する役割を持ちます。Djangoでは、models.pyに定義されたモデルが、データベースのテーブルとして生成されます。データの取得や更新、保存などの処理を行います。Djangoのモデルは、オブジェクト関係マッピング(ORM)を利用して、データベースとのやりとりを行います。Viewtemplates
views.pyユーザーが見ることができる画面を表示する役割を持ちます。Djangoでは、views.pyに定義された関数が、URLパターンに応じたビューとして呼び出されます。ビューは、テンプレートエンジンを使って、HTMLなどのファイルをレンダリングし、ユーザーに表示します。
Controllerurls.py, views.pyユーザーからの入力を処理し、ModelとViewを制御する役割を持ちます。Djangoでは、urls.pyに定義されたURLパターンが、views.pyの関数を呼び出す役割を担います。URLパターンに応じたビューを呼び出し、ビューからの入力を受け取り、Modelにデータを要求したり、Viewを更新したりします。
views.pyユーザーが見ることができる画面を表示する役割を持ちます。Djangoでは、views.pyに定義された関数が、URLパターンに応じたビューとして呼び出されます。ビューは、テンプレートエンジンを使って、HTMLなどのファイルをレンダリングし、ユーザーに表示します。
Controllerurls.py, views.pyユーザーからの入力を処理し、ModelとViewを制御する役割を持ちます。Djangoでは、urls.pyに定義されたURLパターンが、views.pyの関数を呼び出す役割を担います。URLパターンに応じたビューを呼び出し、ビューからの入力を受け取り、Modelにデータを要求したり、Viewを更新したりします。
请注意,Controller在urls.py和views.py中都有定义。urls.py负责处理URL模式和视图的关联,而views.py负责实现视图。这样可以将控制器的角色分离出来,提高代码的可复用性。
my_project/
├── my_app/ # アプリケーションのルートディレクトリ
│ ├── __init__.py # Pythonのパッケージとして認識するための空のファイル
│ ├── admin.py # Djangoの管理画面で表示するモデルの登録や設定を行うファイル
│ ├── apps.py # アプリケーションの設定を記述するファイル
│ ├── forms.py # フォームの定義を行うファイル
│ ├── models.py # アプリケーション内のデータモデルを定義するファイル
│ ├── tests.py # アプリケーションのテストを定義するファイル
│ ├── urls.py # アプリケーション内のURLパターンとビューの関連付けを定義するファイル
│ ├── views.py # ビューの定義を行うファイル
│ └── templates/ # テンプレートファイルを格納するディレクトリ
│ └── my_app/ # アプリケーション別のテンプレートを格納するディレクトリ
│ ├── base.html # ページの共通部分を定義するためのテンプレートファイル
│ ├── todo_list.html# ToDoリストの一覧表示を行うためのテンプレートファイル
│ └── todo_add.html # ToDoリストの追加を行うためのテンプレートファイル
└── my_project/ # プロジェクトのルートディレクトリ
├── __init__.py # Pythonのパッケージとして認識するための空のファイル
├── settings.py # プロジェクトの設定を記述するファイル
├── urls.py # プロジェクト全体のURLパターンとアプリケーションのURLパターンを関連付けるファイル
└── wsgi.py # プロジェクトをウェブサーバーに接続するためのファイル
一个实施的例子
我将通过提供具体的例子,来解释模型、视图和控制器的作用。
首先,让我们看看Django应用程序的情况。以下是一种管理任务清单应用程序的Model, View, Controller概念图。
- Model: ToDoリストのデータを管理するためのModelを定義します。以下は、ToDoリストのモデルの例です。
from django.db import models
class TodoItem(models.Model):
title = models.CharField(max_length=100)
description = models.TextField()
is_completed = models.BooleanField(default=False)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
def __str__(self):
return self.title
这个模型负责管理待办列表的标题、描述、完成标志、创建日期和更新日期。
观看
定义用于显示待办事项列表的视图。下面是一个显示待办事项列表的视图示例。
from django.shortcuts import render
from .models import TodoItem
def todo_list(request):
todo_items = TodoItem.objects.all()
context = {'todo_items': todo_items}
return render(request, 'todo_list.html', context)
这个视图从ToDo列表模型中获取数据,创建一个上下文来传递给模板,然后渲染HTML文件。
控制器
定义一个控制器来控制待办事项列表。以下是一个用于添加待办事项的控制器示例。
from django.shortcuts import render, redirect
from .forms import TodoItemForm
def todo_add(request):
if request.method == 'POST':
form = TodoItemForm(request.POST)
if form.is_valid():
form.save()
return redirect('todo_list')
else:
form = TodoItemForm()
context = {'form': form}
return render(request, 'todo_add.html', context)
这个控制器从ToDo列表表单中获取数据并保存到模型中。如果保存成功,将重定向到ToDo列表页面。如果保存失败,将重新显示表单。