回顧補(bǔ)充

  1. 一個完整的軟件結(jié)構(gòu)囤捻,包含了和用戶交互的軟件界面食听、進(jìn)行數(shù)據(jù)處理的后端程序籍救、實(shí)現(xiàn)數(shù)據(jù)存儲的數(shù)據(jù)庫三個部分习绢;

通過前端交互界面展示數(shù)據(jù)或者獲取用戶輸入的數(shù)據(jù),將數(shù)據(jù)傳遞給后端處理程序[傳遞請求參數(shù)]蝙昙;后端處理程序處理完數(shù)據(jù)闪萄,將數(shù)據(jù)永久保存[持久化]到數(shù)據(jù)庫中。
通過后端處理程序可以從數(shù)據(jù)庫中讀取數(shù)據(jù)奇颠,經(jīng)過處理之后傳遞給前端網(wǎng)頁進(jìn)行展示

圖1

2. Django創(chuàng)建的web項(xiàng)目败去,文件結(jié)構(gòu) & 項(xiàng)目結(jié)構(gòu)
文件結(jié)構(gòu):每個文件的意義[文件的作用和所處的位置]

|-- mysite/         # 項(xiàng)目根目錄
     |-- mysite/          # 根項(xiàng)目 只能出現(xiàn)1個,在創(chuàng)建項(xiàng)目時同時創(chuàng)建
          |-- settings.py    # 項(xiàng)目信息配置烈拒,如項(xiàng)目的語言
          |-- urls.py         # 項(xiàng)目主路由配置
     |-- myblog/          # 子應(yīng)用模塊圆裕,可以出現(xiàn)0~n個
          |-- app.py           # 子應(yīng)用模塊的信息描述
          |-- models.py       # 子應(yīng)用模塊中的模型
          |-- urls.py          # 子應(yīng)用模塊中的自路由,需要包含到主路由中
          |-- views.py         # 子應(yīng)用視圖處理模塊荆几,通過路由來調(diào)用函數(shù)
          |-- models_manager.py # 管理器模塊[可選]
     |-- manage.py       # 命令模塊

項(xiàng)目結(jié)構(gòu):項(xiàng)目組織形式[架構(gòu)方式]~通過根項(xiàng)目模塊吓妆,管理所有的子項(xiàng)目模塊

|-- 根項(xiàng)目
      |-- 子模塊項(xiàng)目[單獨(dú)的項(xiàng)目]<INSTALLED_APPS | urls -> 接入跟項(xiàng)目>
      |-- 子模塊項(xiàng)目[單獨(dú)的項(xiàng)目]
      |-- ..
功能的擴(kuò)展性和可伸縮性及可維護(hù)性非常的強(qiáng)大!
擴(kuò)展性:Django可以在盡量少的修改源代碼的基礎(chǔ)上吨铸,增加強(qiáng)大的新功能[OCP]
可伸縮性:Django的項(xiàng)目功能行拢,可以在互相不影響的情況下,動態(tài)的增加或者減少不同的項(xiàng)目功能
可維護(hù)性:不同的項(xiàng)目功能分布在不同的子模塊應(yīng)用中焊傅,如果某個功能出現(xiàn)巨大的問題剂陡,只需要停用這個模塊項(xiàng)目即可,不影響其他的模塊項(xiàng)目的正常功能

3. Django的設(shè)計結(jié)構(gòu)——MVT處理模式
MVT處理模式一種編程思想狐胎,由數(shù)據(jù)模型Model鸭栖,視圖模塊view和模板系統(tǒng)Template組成;并且添加了路由url的功能實(shí)現(xiàn)請求分發(fā)操作握巢,完成實(shí)際流程的處理
一個完成的流程就是客戶端請求發(fā)送之后晕鹊,通過路由Urls分配請求到具體的視圖處理函數(shù)views中進(jìn)行操作,調(diào)用普通處理函數(shù)處理具體的數(shù)據(jù)模型models暴浦,將數(shù)據(jù)增加/修改/刪除/查詢到數(shù)據(jù)庫的操作溅话,最后普通處理函數(shù)返回處理結(jié)果給視圖處理函數(shù)views,view中將數(shù)據(jù)填充到模板template中返回給客戶端瀏覽器進(jìn)行展示歌焦。

圖2

聽說過MVC處理模式嗎飞几?聽說過MVP處理模式嗎?聽說過MVT處理模式嗎独撇?
MVC是最基本的一種編程思想屑墨,主要解決的是一個問題的處理流程躁锁,通過三個組成部分[封裝數(shù)據(jù)的模型model,進(jìn)行數(shù)據(jù)展示和采集的視圖view卵史,以及進(jìn)行請求分發(fā)的控制器controller]完成問題處理流程的一種操作模式战转;在這種操作模式中,控制器完成視圖和模型之間數(shù)據(jù)自動交互的橋梁以躯,視圖發(fā)起的請求會由控制器進(jìn)行轉(zhuǎn)發(fā)調(diào)用后端程序的處理函數(shù)進(jìn)行數(shù)據(jù)model的處理槐秧,處理完成之后返回結(jié)果給控制器,控制器根據(jù)處理的結(jié)果返回不同的視圖頁面進(jìn)行展示忧设;在現(xiàn)行的MVC處理模式中刁标,發(fā)展過程中將視圖和模型的數(shù)據(jù)進(jìn)行了雙向綁定,視圖中的數(shù)據(jù)發(fā)生變化见转,模型中的數(shù)據(jù)會自動變化命雀,同樣的模型中的數(shù)據(jù)一旦發(fā)生改變,視圖中的數(shù)據(jù)同時變化斩箫。
MVP處理模式吏砂,是在MVC處理模式上,為了區(qū)分?jǐn)?shù)據(jù)的綁定方式而杜撰的一個處理模式
MVP處理模式~前后端數(shù)據(jù)的交互乘客,必須通過主動交互才能發(fā)生改變狐血。
MVT處理模式,參考上圖

4. Django項(xiàng)目搭建過程

a.  創(chuàng)建項(xiàng)目[Django項(xiàng)目在創(chuàng)建時易核,會自動創(chuàng)建根項(xiàng)目匈织,是包含在根目錄中的]
>>> django-admin startproject <name>
>>> eg. django-admin startproject mysite
b.  創(chuàng)建子應(yīng)用模塊
mysite>>> django-admin startapp <model_name>
mysite>>>eg. django-admin startapp myblog
c.  注冊子應(yīng)用模塊給根項(xiàng)目
(1) 修改mysite/mysite/settings.py配置文件
..
INSTALLED_APPS = [
   ..
   ‘myblog’,
]
(2) 修改主路由文件mysite/mysite/urls.py
from django.conf.urls import url, include

urlpatterns = [
url(r”myblog/”, include(“myblog.urls”)),
..
]
d.  根項(xiàng)目的網(wǎng)頁視圖以及靜態(tài)文件處理[所有子應(yīng)用模塊公共的]
(1) 配置根網(wǎng)頁視圖文件夾,修改mysite/mysite/settings.py
..
TEMPLATES = {
..
DIRS: [“temp”]   # mysite/temp/
..
}
(2) 配置根項(xiàng)目靜態(tài)文件路徑牡直,修改mysite/mysite/settings.py
添加新的配置
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, “static”)   # mysite/static/
]
e.  配置子應(yīng)用模塊的網(wǎng)頁模板以及靜態(tài)文件
子應(yīng)用模板的網(wǎng)頁模板和靜態(tài)文件不需要配置缀匕,而是Django內(nèi)置的加載器對象,自動在子應(yīng)用模塊中進(jìn)行查詢[網(wǎng)頁和靜態(tài)文件]

子應(yīng)用模塊網(wǎng)頁文件:在子應(yīng)用模塊中templates/文件夾下
子應(yīng)用模塊的靜態(tài)文件:在子應(yīng)用模塊中static/文件夾下

實(shí)際操作過程中碰逸,為了和根項(xiàng)目網(wǎng)頁和靜態(tài)文件做區(qū)分乡小,所以要進(jìn)行路徑隔離
eg:
mysite/myblog/templates/myblog/index.html
mysite/myblog/static/myblog/css/index.css

5. Django中的數(shù)據(jù)模型定義

數(shù)據(jù)模型:自定義的類型,可以創(chuàng)建對象饵史,用于封裝我們正在使用的數(shù)據(jù)满钟,可以方便的和數(shù)據(jù)庫進(jìn)行交互
a.  連接數(shù)據(jù)庫:mysite/mysite/settgins.py
import pymysql
pymysql.install_as_MySQLdb()

DATABASES = {
‘detault’:{
    ‘ENGINE’: ‘django.db.backends.mysql’
    ‘NAME’: ‘db_name’
    ‘USER’: ‘root’
    ‘PASSWORD’: ‘’
}
}
b.  定義數(shù)據(jù)模型
from django.db import models
class MyObject(models.Model):  # 自定義類型必須繼承Model類型
     id = models.AutoField(..)   # 類型的屬性,必須通過Django方法創(chuàng)建
c.  數(shù)據(jù)交互[數(shù)據(jù)和數(shù)據(jù)庫之間的增刪改查]
(1) 通過類型本身進(jìn)行操作
models.MyObject.objects.all()/filter()/..

m = MyObject()創(chuàng)建一個對象
m.save()/delete()/update()
(2) 通過管理器對象進(jìn)行操作
自定義管理器對象胳喷,繼承Django內(nèi)置的Manager類型
class MyObjectManager(models.Manager):
def create_obj(self, **kw):
    pass
def delete_obj(self, **kw):
    pass
def update_obj(self, **kw):
   pass
..

6. 網(wǎng)頁前端和后端程序之間的交互

(1) 網(wǎng)頁前端發(fā)送數(shù)據(jù)給后端程序
前端網(wǎng)頁的數(shù)據(jù):用戶輸入(表單)湃番、超鏈接、URL地址直接訪問
前端->后端程序:數(shù)據(jù)的傳遞:請求參數(shù)

前端? 傳遞數(shù)據(jù) ? 后端程序
HTTP1.1標(biāo)注:8種傳遞方式
常見4種傳遞方式[GET/POST/PUT/DELETE]
項(xiàng)目中常用的2中傳遞方式[GET/POST]

擴(kuò)展:項(xiàng)目中吭露,還有一種特殊的GET傳遞方式:RESTful
?   get傳遞
?   post傳遞
?   restful傳遞
RESTful傳遞的參數(shù)吠撮,包含在url路徑中
url路徑是通過路由進(jìn)行配置
參數(shù)需要通過路由進(jìn)行設(shè)置

url(r’^param/(?P<name>[a-z]+)/rest/$’, views.rest_test)
()表示這里需要一個參數(shù)
?要使用指定的語法
P:param,表示參數(shù)描述
<name>:表示接受的參數(shù)數(shù)據(jù)讲竿,會放在一個名稱為name的變量中
[a-z]+:表示這個參數(shù)只接受小寫的1個或者多個字符
def rest_test(request, name):
    pass

(2) 后端程序傳遞數(shù)據(jù)到網(wǎng)頁進(jìn)行展示
模板語法:Templates
變量|程序結(jié)構(gòu)|過濾器|注釋
{{name}} | {% 標(biāo)簽 %}

變量[普通|對象|列表|字典|..] {{變量名稱}}
標(biāo)簽{% %}
    程序結(jié)構(gòu) {%if%}..{%for%}..{%csrf_token%}..{%commend%}
    {%block%}..{%load%}..{%url%}..{%static%}
過濾器{{變量 | 過濾器}}
注釋:{%comment%}{%endcomment%}
    常規(guī)的網(wǎng)頁注釋纬向,不會影響變量數(shù)據(jù)的輸出

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末择浊,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子逾条,更是在濱河造成了極大的恐慌,老刑警劉巖投剥,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件师脂,死亡現(xiàn)場離奇詭異,居然都是意外死亡江锨,警方通過查閱死者的電腦和手機(jī)吃警,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來啄育,“玉大人酌心,你說我怎么就攤上這事√敉悖” “怎么了安券?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長氓英。 經(jīng)常有香客問我侯勉,道長,這世上最難降的妖魔是什么铝阐? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任址貌,我火速辦了婚禮,結(jié)果婚禮上徘键,老公的妹妹穿的比我還像新娘练对。我一直安慰自己,他們只是感情好吹害,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布螟凭。 她就那樣靜靜地躺著,像睡著了一般赠制。 火紅的嫁衣襯著肌膚如雪赂摆。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天钟些,我揣著相機(jī)與錄音烟号,去河邊找鬼。 笑死政恍,一個胖子當(dāng)著我的面吹牛汪拥,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播篙耗,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼迫筑,長吁一口氣:“原來是場噩夢啊……” “哼宪赶!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起脯燃,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤搂妻,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后辕棚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體欲主,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年逝嚎,在試婚紗的時候發(fā)現(xiàn)自己被綠了扁瓢。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡补君,死狀恐怖引几,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情挽铁,我是刑警寧澤伟桅,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站屿储,受9級特大地震影響贿讹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜够掠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一民褂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧疯潭,春花似錦赊堪、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至相叁,卻和暖如春遵绰,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背增淹。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工椿访, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人虑润。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓成玫,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子哭当,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理猪腕,服務(wù)發(fā)現(xiàn),斷路器钦勘,智...
    卡卡羅2017閱讀 134,654評論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,098評論 25 707
  • 談?wù)?MVX 中的 Model 談?wù)?MVX 中的 View 談?wù)?MVX 中的 Controller 淺談 MV...
    Draveness閱讀 14,856評論 0 60
  • 瑜伽 不光是一種鍛煉身體的方式 還是一種 讓心靈和身體 與自然結(jié)合的一個通道 也許我們每個人 一輩子也不可能擁有一...
    一葉茶閱讀 141評論 0 2
  • 姓名:賈志誠身高:175CM來自:內(nèi)蒙古包頭市:13歲時彻采,迷戀網(wǎng)絡(luò)游戲脖岛,最終輟學(xué)離開了校園;自此颊亮,賈志誠便踏上社會...
    05668594f2ac閱讀 209評論 0 1