日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

詳解Django的MVT設計模式

瀏覽:42日期:2024-09-09 10:35:11
經典的MVC設計模式及其優點

MVC即 Model-View-Controller(模型-視圖-控制器) ,是經典的軟件開發設計模式。

**Model (模型) **: 簡而言之即數據模型。模型不是數據本身(比如數據庫里的數據),而是抽象的描述數據的構成和邏輯關系。通常模型包括了數據表的各個字段(比如人的年齡和出生日期)和相互關系(單對單,單對多關系等)。Web開發框架會根據模型的定義來自動生成數據表。 View (視圖): 主要用于顯示數據,用來展示用戶可以看到的內容或提供用戶可以輸入或操作的界面。數據來源于哪里?當然是數據庫啦。那么用戶輸入的數據給誰? 當然是給控制器啦。 Controller(控制器):應用程序中處理用戶交互的部分。通常控制器負責從視圖讀取數據,控制用戶輸入,并向模型發送數據(比如增加或更新數據表)。

如果把MVC比喻成一個粽子,那么View就是最外面一層的綠色玉米葉,是吃貨們可以直接看到的。Controller就是中間那層熟糯米,而粽子的核心自然是最里面那一層的肉餡Model模型了。現在大家知道中學和大學數學建模的重要性了吧?

MVC最大的優點是實現了軟件或網絡應用開發過程中數據、業務邏輯和用戶界面的分離,使軟件開發更清晰,也是維護變得更容易。這與靜態網頁設計中使用html和css實現了內容和樣式的分離是同一個道理。

Django是如何遵循MVC設計模式的?

Django的MVT設計模式由Model(模型), View(視圖) 和Template(模板)三部分組成,分別對應單個app目錄下的models.py, views.py和templates文件夾。它們看似與MVC設計模式不太一致,其實本質是相同的。Django的MVT設計模式與經典的MVC對應關系如下。

Django Model(模型): 這個與經典MVC模式下的模型Model差不多。 Django View(視圖): 這個與MVC下的控制器Controller更像。視圖不僅負責根據用戶請求從數據庫讀取數據、指定向用戶展示數據的方式(網頁或json數據), 還可以指定渲染模板并處理用戶提交的數據。 Django Template(模板): 這個與經典MVC模式下的視圖View一致。模板用來呈現Django view傳來的數據,也決定了用戶界面的外觀。Template里面也包含了表單,可以用來搜集用戶的輸入內容。

Django MVT設計模式中最重要的是視圖(view), 因為它同時與模型(model)和模板(templates)進行交互。當用戶發來一個請求(request)時,Django會對請求頭信息進行解析,解析出用戶需要訪問的url地址,然后根據路由urls.py中的定義的對應關系把請求轉發到相應的視圖處理。視圖會從數據庫讀取需要的數據,指定渲染模板,最后返回響應數據。這個過程如下圖所示:

詳解Django的MVT設計模式

示例

現在我們以示例演示Django的MVT三部分是如何工作的。

新建app并注冊

假如你有一個mysite項目,希望新增一個任務管理小應用,你首先要使用python manage.py startapp tasks的命令創建一個名為tasks的app,將它加入到settings.py中的INSTALLED_APP中去。

# mysite/settings.pyINSTALLED_APPS = [ ’django.contrib.admin’, ’django.contrib.auth’, ’django.contrib.contenttypes’, ’django.contrib.sessions’, ’django.contrib.messages’, ’django.contrib.staticfiles’, ’tasks’,]

然后把tasks應用的urls添加到到項目的urls中去。

# mysite/urls.pyfrom django.contrib import adminfrom django.urls import path, includeurlpatterns = [ path(’admin/’, admin.site.urls), path(’tasks/’, include(’tasks.urls’))]創建模型(M)

編輯tasks目錄下models.py創建Task模型, Task模型包含里名稱name和狀態status兩個字段。當你使用python manage.py makemigrations和python manage.py migrate命令時,Django會自動為你在數據庫創建數據表(默認使用的數據庫是免費的sqlite),表名為tasks_task。

# tasks/models.pyfrom django.db import modelsclass 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.pyfrom django.shortcuts import renderfrom .models import Task# 任務清單def task_list(request): # 從數據庫獲取Task對象列表 tasks = Task.objects.all() # 指定渲染模板并向模板傳遞數據 return render(request, 'tasks/task_list.html', { 'tasks': tasks,})

光編寫視圖(views.py)還不夠,我們還得為寫好的視圖函數配置路由,這樣才能將視圖函數與用戶的請求地址建立好對應關系。編輯或創建tasks/urls.py, 添加如下代碼:

這樣當用戶訪問/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視圖實現。

小結

Django的MVT設計模式也遵循了軟件設計經典的MVC設計模式。事實上我們在日常Django項目開發過程中一般也是先編寫M,再編寫V,最后才寫T。

以上就是詳解Django的MVT設計模式的詳細內容,更多關于Django的MVT設計模式的資料請關注好吧啦網其它相關文章!

標簽: Django
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩中文字幕1| 精品免费在线| 精品女同一区二区三区在线观看| 亚洲精品乱码日韩| 中文日韩欧美| 亚洲免费精品| 电影亚洲精品噜噜在线观看| 欧美视频一区| 国产精品亚洲欧美| 国产精品一区二区三区av| 日韩高清一区| 日韩av资源网| 欧美三区不卡| 国产精品麻豆成人av电影艾秋| 日韩动漫一区| 日韩激情一二三区| 日韩精品视频网| 日韩三级久久| 日韩精品a在线观看91| 日韩高清国产一区在线| 日本综合视频| 日本电影久久久| 亚洲精品护士| 涩涩涩久久久成人精品| 97成人在线| 免费日韩一区二区三区| 高清一区二区三区av| 九色porny丨国产首页在线| 欧美影院三区| 蜜臀av亚洲一区中文字幕| 在线免费观看亚洲| 日韩高清成人在线| 精品久久精品| 亚洲91精品| 免费中文字幕日韩欧美| 日韩av在线免费观看不卡| 美女视频黄免费的久久| 麻豆精品蜜桃视频网站| caoporn视频在线| 亚洲调教视频在线观看| 在线免费观看亚洲| 欧美激情麻豆| 日韩啪啪电影网| 亚洲欧美日本日韩| 亚州精品视频| 成人在线观看免费视频| а√天堂8资源在线| 成人免费网站www网站高清| 欧美中文一区二区| 性色av一区二区怡红| 综合欧美精品| 亚洲精品高潮| 日韩精品亚洲专区在线观看| 国产欧美日韩精品一区二区免费| 免费看一区二区三区| 中国字幕a在线看韩国电影| 成人精品国产亚洲| 精品资源在线| 欧美日韩免费看片| 中文久久精品| 日韩国产欧美三级| 久久亚洲精品中文字幕| 免费一二一二在线视频| 亚洲欧美日韩精品一区二区| 欧美综合精品| 福利片在线一区二区| 欧美日韩国产传媒| 久久久一二三| 国产一区观看| 中文字幕亚洲精品乱码| 国产精品伊人| 美女福利一区二区三区| 国语精品一区| 欧美色图一区| 亚洲精品第一| 麻豆高清免费国产一区| 日韩不卡在线| 亚洲一级淫片| 国产中文字幕一区二区三区| 欧美91视频| 亚洲精品护士| 精品一区二区三区在线观看视频 | 91成人精品视频| 日韩精品成人| 日韩中文在线电影| 中文精品电影| 成人国产精品一区二区网站| 亚洲欧美高清| 久久精品国内一区二区三区| 国产综合欧美| 欧美专区18| 麻豆精品久久久| 亚洲一区二区三区免费在线观看| 免费美女久久99| 精品午夜久久| 亚洲精品福利| 韩国女主播一区二区三区| 日韩欧美中文字幕电影| 久久久一本精品| 国产欧美一区| 国产色综合网| 国产精品三p一区二区| 91精品99| 精品美女久久| 亚洲天堂日韩在线| 精品日韩视频| 国产精品亚洲人成在99www| 欧美午夜不卡| 国产精品美女午夜爽爽| 免费久久99精品国产自在现线| 精品不卡一区| 日韩中文字幕| 久久久久久黄| 在线精品视频一区| 成人日韩在线| 国产情侣一区| 午夜一级在线看亚洲| 中文字幕在线看片| 欧美激情三区| 亚洲va久久久噜噜噜久久| 一区二区小说| 欧美国产偷国产精品三区| 91精品国产自产在线丝袜啪| 久久久久美女| 国产伊人久久| 国产精品一卡| 日本视频中文字幕一区二区三区| av不卡在线看| 成人在线免费观看91| 久久精品国产一区二区| 日韩精品高清不卡| 亚洲综合五月| 999在线观看精品免费不卡网站| 国产精品国产一区| 久久精品伊人| 国产欧美一区二区三区精品观看| 免费高清在线一区| 久久尤物视频| 日韩va亚洲va欧美va久久| 爽爽淫人综合网网站| 蜜桃成人av| 久久久久.com| 风间由美中文字幕在线看视频国产欧美| 日韩不卡一区二区| 亚洲天堂成人| 欧美.日韩.国产.一区.二区| 亚洲成人不卡| 欧美一级精品| 色爱av综合网| 国产成人精选| 久久精品免视看国产成人| 一二三区精品| 亚洲一二av| 在线日韩中文| 米奇777超碰欧美日韩亚洲| 亚洲a一区二区三区| 欧美日韩精品免费观看视完整| 高清一区二区三区av| 国产精品成人一区二区不卡| 水蜜桃精品av一区二区| 欧美国产一级| 国产精品成人一区二区不卡| 97精品一区| 亚洲成人av观看| 久久久久久网| 国产精品日本一区二区不卡视频 | 国产视频一区三区| 蜜臀a∨国产成人精品| 石原莉奈一区二区三区在线观看| 亚洲综合不卡| 亚洲精品人人| 久久蜜桃精品| 女人天堂亚洲aⅴ在线观看| 日韩精品一卡| 国产成人精品一区二区三区视频| 欧美好骚综合网| 国产99久久| 丝袜美腿高跟呻吟高潮一区| 蜜臀久久99精品久久久久宅男| 蜜臀久久久久久久| 日韩高清欧美激情| 欧美激情视频一区二区三区免费| 国产h片在线观看| 91精品一区二区三区综合在线爱| 国产精品二区不卡| 亚洲一级特黄| 亚洲精品无吗| 国产精品黄网站| 久久久久99| 首页欧美精品中文字幕| 婷婷综合成人| 免费一级欧美片在线观看网站| 日韩黄色大片| 91精品1区| 亚洲精品精选| 老司机精品在线| 成人日韩在线观看| 天堂成人国产精品一区| 91欧美精品| 日韩有吗在线观看|