亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識(shí)庫 > 詳解Django的MVT設(shè)計(jì)模式

詳解Django的MVT設(shè)計(jì)模式

熱門標(biāo)簽:遼寧400電話辦理多少錢 幫人做地圖標(biāo)注收費(fèi)算詐騙嗎 荊州云電銷機(jī)器人供應(yīng)商 蘇州電銷機(jī)器人十大排行榜 江蘇房產(chǎn)電銷機(jī)器人廠家 悟空智電銷機(jī)器人6 外呼不封號(hào)系統(tǒng) 溫州旅游地圖標(biāo)注 電信營業(yè)廳400電話申請

經(jīng)典的MVC設(shè)計(jì)模式及其優(yōu)點(diǎn)

MVC即 Model-View-Controller(模型-視圖-控制器) ,是經(jīng)典的軟件開發(fā)設(shè)計(jì)模式。

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

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

MVC最大的優(yōu)點(diǎn)是實(shí)現(xiàn)了軟件或網(wǎng)絡(luò)應(yīng)用開發(fā)過程中數(shù)據(jù)、業(yè)務(wù)邏輯和用戶界面的分離,使軟件開發(fā)更清晰,也是維護(hù)變得更容易。這與靜態(tài)網(wǎng)頁設(shè)計(jì)中使用html和css實(shí)現(xiàn)了內(nèi)容和樣式的分離是同一個(gè)道理。

Django是如何遵循MVC設(shè)計(jì)模式的?

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

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

Django MVT設(shè)計(jì)模式中最重要的是視圖(view), 因?yàn)樗瑫r(shí)與模型(model)和模板(templates)進(jìn)行交互。當(dāng)用戶發(fā)來一個(gè)請求(request)時(shí),Django會(huì)對請求頭信息進(jìn)行解析,解析出用戶需要訪問的url地址,然后根據(jù)路由urls.py中的定義的對應(yīng)關(guān)系把請求轉(zhuǎn)發(fā)到相應(yīng)的視圖處理。視圖會(huì)從數(shù)據(jù)庫讀取需要的數(shù)據(jù),指定渲染模板,最后返回響應(yīng)數(shù)據(jù)。這個(gè)過程如下圖所示:

示例

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

新建app并注冊

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

# mysite/settings.py

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

然后把tasks應(yīng)用的urls添加到到項(xiàng)目的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'))
]

創(chuàng)建模型(M)

編輯tasks目錄下models.py創(chuàng)建Task模型, Task模型包含里名稱name和狀態(tài)status兩個(gè)字段。當(dāng)你使用python manage.py makemigrations和python manage.py migrate命令時(shí),Django會(huì)自動(dòng)為你在數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)表(默認(rèn)使用的數(shù)據(jù)庫是免費(fèi)的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,并新增一個(gè)視圖函數(shù) task_list, 用于展示任務(wù)清單。該視圖函數(shù)從數(shù)據(jù)庫讀取了Task對象列表,指定了渲染模板并向模板傳遞了數(shù)據(jù)。

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

# 任務(wù)清單
def task_list(request):
    # 從數(shù)據(jù)庫獲取Task對象列表
    tasks = Task.objects.all()
    # 指定渲染模板并向模板傳遞數(shù)據(jù)
    return render(request, "tasks/task_list.html", { "tasks": tasks,})

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

這樣當(dāng)用戶訪問/tasks/時(shí),Django將調(diào)用task_list視圖函數(shù)。這個(gè)視圖函數(shù)將同時(shí)與數(shù)據(jù)庫和模板進(jìn)行交互。

編輯模板(T)

最后我們要?jiǎng)?chuàng)建task_list.html用于展示視圖傳來的任務(wù)列表數(shù)據(jù)。這個(gè)文件的完整路徑為tasks/templates/tasks/task_list.html。至于模板為什么放這里,我們后續(xù)會(huì)專門介紹。Django還提供了自己的模板語言,包括常見的判斷和循環(huán),專門用來渲染模板。

# 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>

當(dāng)然此時(shí)如果你通過瀏覽器訪問/tasks/, 還看不到任何內(nèi)容,這是因?yàn)槟愕臄?shù)據(jù)表里還沒有任何數(shù)據(jù)。你可以通過django的admin添加或新增task_create視圖實(shí)現(xiàn)。

小結(jié)

Django的MVT設(shè)計(jì)模式也遵循了軟件設(shè)計(jì)經(jīng)典的MVC設(shè)計(jì)模式。事實(shí)上我們在日常Django項(xiàng)目開發(fā)過程中一般也是先編寫M,再編寫V,最后才寫T。

以上就是詳解Django的MVT設(shè)計(jì)模式的詳細(xì)內(nèi)容,更多關(guān)于Django的MVT設(shè)計(jì)模式的資料請關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • 詳解用Go語言實(shí)現(xiàn)工廠模式(Golang經(jīng)典編程案例)
  • 如何使用django的MTV開發(fā)模式返回一個(gè)網(wǎng)頁
  • 淺談django三種緩存模式的使用及注意點(diǎn)
  • 淺談django開發(fā)者模式中的autoreload是如何實(shí)現(xiàn)的
  • go語言單例模式(Singleton)實(shí)例分析
  • Go語言設(shè)計(jì)模式之結(jié)構(gòu)型模式

標(biāo)簽:欽州 景德鎮(zhèn) 三沙 宿遷 黃山 濟(jì)南 臺(tái)灣 喀什

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《詳解Django的MVT設(shè)計(jì)模式》,本文關(guān)鍵詞  詳解,Django,的,MVT,設(shè)計(jì)模式,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《詳解Django的MVT設(shè)計(jì)模式》相關(guān)的同類信息!
  • 本頁收集關(guān)于詳解Django的MVT設(shè)計(jì)模式的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    精品毛片视频| 91麻豆高清国产在线播放| 国产a视频| 国产不卡精品一区二区三区| 免费国产在线观看不卡| 久久国产精品自由自在| 麻豆系列 在线视频| 91麻豆精品国产高清在线| 韩国毛片基地| 精品美女| 成人免费观看网欧美片| 欧美一级视频免费| 国产成人精品影视| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 国产不卡精品一区二区三区| 亚洲精品久久玖玖玖玖| 久久久久久久久综合影视网| 日韩av片免费播放| 日本免费乱理伦片在线观看2018| 精品视频免费看| 国产视频在线免费观看| 日韩免费在线视频| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 青青青草视频在线观看| 成人影院一区二区三区| 日韩中文字幕一区二区不卡| 色综合久久天天综合观看| 精品国产一区二区三区免费| 久久国产一久久高清| 午夜精品国产自在现线拍| 欧美日本二区| 国产不卡高清| 国产网站在线| 香蕉视频久久| 国产高清在线精品一区二区| 精品在线视频播放| 久久福利影视| 青青青草影院 | 成人高清护士在线播放| 免费一级生活片| 韩国毛片基地| 精品久久久久久中文字幕一区| 香蕉视频久久| 91麻豆精品国产高清在线| 国产伦久视频免费观看视频| 国产精品自拍亚洲| 久久精品欧美一区二区| 精品国产一区二区三区久| 精品国产一区二区三区精东影业 | 日本免费乱人伦在线观看| 日韩av东京社区男人的天堂| 日韩欧美一二三区| 国产视频一区二区在线播放| 国产国语对白一级毛片| 国产一区二区高清视频| 精品视频一区二区三区| 成人免费网站久久久| 美女免费毛片| 日韩在线观看视频黄| 精品国产香蕉在线播出| 999精品视频在线| 青青青草影院 | 欧美大片aaaa一级毛片| 成人高清视频免费观看| 四虎精品在线观看| 青青久久网| 亚洲 国产精品 日韩| 99久久精品国产麻豆| 日韩专区在线播放| 九九免费精品视频| 日本免费乱人伦在线观看| 黄色短视频网站| 日本特黄特色aa大片免费| 在线观看成人网 | 日韩一级精品视频在线观看| 国产麻豆精品免费密入口| 色综合久久手机在线| a级黄色毛片免费播放视频| 欧美激情影院| 色综合久久天天综线观看| 日本特黄特黄aaaaa大片| 青青久久网| 青青久久精品| 99热精品在线| 美女免费毛片| 91麻豆tv| 国产高清在线精品一区a| 精品国产一区二区三区免费| 日韩在线观看视频网站| 天天色色色| 成人a级高清视频在线观看| 四虎久久影院| 国产a毛片| 国产一区二区福利久久| 国产成人精品综合久久久| 国产一区二区福利久久| 国产亚洲精品aaa大片| 韩国毛片基地| 天天做日日爱夜夜爽| 精品国产香蕉在线播出| 日本伦理片网站| 韩国三级香港三级日本三级| 国产一区免费在线观看| 日韩在线观看网站| 欧美激情中文字幕一区二区| 精品国产一区二区三区久 | 久久国产精品自线拍免费| 欧美一级视频免费| 国产91视频网| 日韩免费片| 亚洲天堂免费观看| 黄视频网站在线看| 美女免费精品高清毛片在线视 | 欧美α片无限看在线观看免费| 天堂网中文字幕| 国产高清视频免费| 深夜做爰性大片中文| 欧美另类videosbestsex视频| 二级片在线观看| 国产成a人片在线观看视频| 中文字幕一区二区三区精彩视频 | 日本乱中文字幕系列 | 国产不卡高清在线观看视频| 亚洲天堂免费观看| 成人免费高清视频| 九九久久99综合一区二区| 亚洲 激情| 亚州视频一区二区| 99色视频| 欧美日本二区| 亚洲女初尝黑人巨高清在线观看| 欧美国产日韩在线| 黄视频网站在线免费观看| 欧美1卡一卡二卡三新区| 日韩在线观看视频黄| 久久久久久久久综合影视网| 久久成人亚洲| 沈樵在线观看福利| 欧美1卡一卡二卡三新区| 国产a视频| 天堂网中文在线| 一级毛片视频播放| 亚久久伊人精品青青草原2020| 国产网站免费视频| 精品国产一区二区三区精东影业 | 国产精品自拍在线观看| 黄视频网站在线免费观看| 国产视频一区在线| 美女免费精品高清毛片在线视 | 99热精品在线| 青青久在线视频| 精品国产一区二区三区久| 999久久久免费精品国产牛牛| 可以免费看污视频的网站| 日韩一级精品视频在线观看| 久久国产影视免费精品| 日韩男人天堂| 日韩在线观看免费| 美女免费精品视频在线观看| 四虎影视库国产精品一区| 国产不卡精品一区二区三区| 欧美国产日韩在线| 国产精品免费久久| 精品国产香蕉在线播出| 精品久久久久久中文| 成人免费观看视频| 毛片高清| 国产伦理精品| 国产不卡在线观看视频| 亚欧成人乱码一区二区| 国产视频一区二区在线观看| 免费国产在线视频| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 成人影院一区二区三区| 黄视频网站免费观看| 精品国产香蕉伊思人在线又爽又黄| 久久国产一区二区| 日韩欧美一及在线播放| 在线观看成人网| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 国产精品1024在线永久免费| 亚洲天堂在线播放| 日本伦理片网站| 国产一区二区福利久久| 青青青草影院 | 精品视频一区二区三区免费| 韩国三级香港三级日本三级| 99热精品一区| 亚洲精品永久一区| 免费一级片在线| 国产一级强片在线观看| 国产成人女人在线视频观看 | 四虎论坛| 国产a毛片| 午夜激情视频在线观看| 色综合久久天天综合绕观看| 成人高清视频免费观看| 国产不卡福利| 午夜激情视频在线观看| 亚欧成人毛片一区二区三区四区|