Django入門開發(fā)1

什么是框架

框架就是已經(jīng)開發(fā)好部分功能代碼顶伞,并封裝起來之后提供給開發(fā)人員進(jìn)行快速項(xiàng)目搭建和開發(fā)的一種項(xiàng)目憾儒。

為什么使用框架

由于不同的項(xiàng)目開發(fā)流程大同小異碰声,所以當(dāng)開發(fā)人員耍共,進(jìn)行了大量的重復(fù)工作之后烫饼,開始著手于代碼自動生成和項(xiàng)目搭建功能的處理,將代碼自動生成并就特定的項(xiàng)目功能直接開發(fā)出來试读,封裝成一個(gè)特定的模塊并發(fā)布杠纵,方便其他開發(fā)人員快速高效率的開發(fā)項(xiàng)目打下基礎(chǔ),所以各種框架根據(jù)不同的項(xiàng)目需要非常流行钩骇;一句話:提高效率降低成本比藻。

模塊和框架的區(qū)別

模塊:一堆函數(shù)的集合
框架:一堆模塊的集合,提供了基本的特定的復(fù)雜功能和處理流程的實(shí)現(xiàn)

Django的優(yōu)勢

在python中倘屹,目前主流的web框架很多银亲,如下面這些:

web.py:輕量級的開源web框架,簡單而且功能強(qiáng)大
Flask:python編寫的輕量級web開發(fā)框架
Django:python編寫的一個(gè)開源的web應(yīng)用框架
Tornado:一個(gè)web服務(wù)器也是一個(gè)web框架

當(dāng)然除此之外唐瀑,還有一些非主流的web框架...,那么這么多的web框架插爹,我們?yōu)槭裁匆欢ㄒ獙W(xué)習(xí)Django呢哄辣?
Django是一個(gè)功能十分強(qiáng)大的web開發(fā)框架请梢,它為我們提供了豐富的各種我們開發(fā)時(shí)需要用到的功能,如:

強(qiáng)大的MVT項(xiàng)目開發(fā)架構(gòu)
完善的模板視圖的支持
準(zhǔn)確的路由地址映射
高效的ORM數(shù)據(jù)操作
完善的后臺管理系統(tǒng)
優(yōu)秀的表單處理功能

Django的歷史由來

Django 剛開始是勞倫斯出版集團(tuán)下屬一家處理新聞信息的子公司進(jìn)行開發(fā)搭建的力穗,專 門用于進(jìn)行新聞網(wǎng)站的開發(fā)而使用的一個(gè) CMS(內(nèi)容管理系統(tǒng))毅弧,由于功能十分受開發(fā)者喜 歡,所以于 2005 年 7 月開源并得到 IT 界非常友好而熱情的接納当窗,在廣大 IT 技術(shù)人員經(jīng) 過大量的完善和擴(kuò)展之后够坐,于 2008 年 9 月發(fā)布了第一個(gè)正式版本。
Django 框架的核心組件有:

用于創(chuàng)建模型的對象關(guān)系映射
為最終用戶設(shè)計(jì)的完美管理界面
一流的URL設(shè)計(jì)
設(shè)計(jì)者友好的模塊語言
緩存系統(tǒng)

Django的架構(gòu)模式

MVC 軟件架構(gòu): 軟件是用來進(jìn)行數(shù)據(jù)處理的崖面,數(shù)據(jù)我們用 Model 來表示元咙,根據(jù)軟件的三層結(jié)構(gòu)模型, 視圖部分通過 View 進(jìn)行表示巫员,在視圖 View 中庶香,我們可以和用戶進(jìn)行數(shù)據(jù)交互,交互的數(shù) 據(jù)被提交到服務(wù)器简识,服務(wù)器根據(jù)用戶提交的數(shù)據(jù)赶掖,經(jīng)過控制器 Controller 進(jìn)行判斷并移交給 合適的函數(shù)進(jìn)行處理的過程,稱為 MVC 處理模式七扰。如下圖所示:

MVT 軟件架構(gòu): Django 在處理的過程中奢赂,對于經(jīng)典的 MVC 處理模式并不是非常認(rèn)同,在實(shí)際項(xiàng)目開 發(fā)過 程中控制器 Controller 起到的作用非常的有限颈走,所以 Django 將控制器部分也進(jìn)行了 封裝膳灶,但是同時(shí)擴(kuò)展了視圖 View 部分,增加了模板功能實(shí)現(xiàn)了前端網(wǎng)頁的復(fù)用疫鹊,所以 Django 的架構(gòu)模式更加符合 MVT 處理模式袖瞻。如下圖所示:


X{%V2{0(_7(0V241EUFB_BJ.png

Django快速入門

Django的下載安裝

Django的版本

目前 Django 大的版本有兩個(gè)分支:
? 1.x 版 穩(wěn)定成熟的版本,目前企業(yè)都使用的這個(gè)大版本
? 2.x 版 18 年剛剛出現(xiàn)拆吆,目前不夠穩(wěn)定聋迎,建議可以簡單的學(xué)習(xí)學(xué)習(xí)
一般來說,選擇長期支持版本比較好枣耀。

pip install django==1.8
pip install django==1.11
pip install django 霉晕,默認(rèn)下載最新版本 

Django的下載

使用pip命令下載Django:

pip install django==版本號
sudo pip install django==版本號

檢查是否下載安裝成功:

django-admin --version

如若成功,會返回安裝的版本號

第一個(gè)Django項(xiàng)目

首先cmd到命令行窗口
cd 到工作空間
執(zhí)行  django-admin startproject 項(xiàng)目名稱
該命令就會創(chuàng)建一個(gè)Django項(xiàng)目

django創(chuàng)建成功后捞奕,項(xiàng)目結(jié)構(gòu)如下:

|-- mysite              # 表示項(xiàng)目名稱
    |-- mysite          # 根模塊牺堰,根模塊跟項(xiàng)目名稱保持一致
        |-- __init__.py     # 模塊描述文件
        |-- settings.py     # 項(xiàng)目的配置文件
        |-- urls.py     # 根路由模塊
        |-- wsgi.py     # django實(shí)現(xiàn)wsgi,目前使用不到
    |-- manage.py           # 該文件是項(xiàng)目的命令文件颅围,不需要我們修改

現(xiàn)在項(xiàng)目我們已經(jīng)創(chuàng)建完成伟葫,下面來運(yùn)行項(xiàng)目:

cd mysite
python manage.py runserver

如果出現(xiàn)如下界面,則表示項(xiàng)目成功:


7I8$73WAV%{P2%`MWCD6LNC.png](https://upload-images.jianshu.io/upload_images/13103779-5abe8e5cb5e1d13f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 使用瀏覽器駛?cè)雋ttp://127.0.0.1:8000,如果頁面出現(xiàn)如下內(nèi)容院促,則表示我們已經(jīng)成功筏养! ![Z35H9V9RZ%(%%KM$U(~{{KV.png

1斧抱、 默認(rèn) Django 項(xiàng)目占據(jù) 8000 端口,如果我們需要修改渐溶,則在命令后直接加上端口號:

python manage.py runserver 9999

2辉浦、 指定特定的 ip 和端口完成訪問

python manage.py runserver 192.168.10.145:9000  

瀏覽器訪問,則發(fā)現(xiàn)報(bào)錯:


}KP6WN{G3MX}D~E3V`JYT$V.png

這個(gè)則因?yàn)?Django 項(xiàng)目如果需要使用特定的 ip 地址訪問茎辐,則需要在 setting.py 配置文件中的 ALLOWED_HOSTS 配置中加入對應(yīng)的 ip 地址宪郊。

ALLOWED_HOST = ["192.168.13.45"]

重啟啟動項(xiàng)目,就會發(fā)現(xiàn)報(bào)錯消失。
3拖陆、 第二種方法弛槐,雖然好用,但是我們發(fā)現(xiàn)這樣做慕蔚,只能讓配置到 ALLOWED_HOSTS 中的 ip 地址可以訪問我們的項(xiàng)目丐黄,如果我們想要所有人都訪問呢? 可以在 ALLOWED_HOSTS 中配置為*孔飒,匹配任意 ip 地址灌闺。 之后啟動項(xiàng)目使用命令如下:

python manage.py runserver 0.0.0.0:9000 使用 0 匹配任意 ip 地址

4、Django 在 1.9 之后開始支持中文坏瞄,修改 setting.py 中的 LANGUAGE_CODE 為 zh-Hans

LANGUAGE CODE = 'zh-Hans'

再次啟動項(xiàng)目桂对,就會發(fā)現(xiàn)英文變成中文了。

創(chuàng)建一個(gè)根模塊視圖

Django提供了完善的模塊劃分功能鸠匀,所以我們很少在根項(xiàng)目下創(chuàng)建視圖蕉斜,但是我們剛剛開始,開始先在根項(xiàng)目下創(chuàng)建視圖來學(xué)習(xí)一下缀棍。
首先進(jìn)入到根項(xiàng)目下宅此,創(chuàng)建一個(gè)views.py文件。
views.py:

from django.http import HttpResponse 

def index(request):  
    return HttpResponse("<h1>hello Django爬范,I coming</h1>") 

完成視圖函數(shù)的編寫后父腕,需要在路由配置文件中配置路由
urls.py:

from django.conf.urls import url 
from django.contrib import admin 

# 導(dǎo)入視圖文件
from . import views 

urlpatterns = [ 
    url(r'^admin/', admin.site.urls),
    # 配置路由信息,當(dāng)用戶訪問 index 路徑時(shí)青瀑,則表示有 views.index 函數(shù)類處理  
    url(r"^index/",views.index,name="index"), 
] 

啟動項(xiàng)目璧亮,在地址欄輸入:http://192.168.10.145:9000/index/
到此為止,一個(gè)視圖已經(jīng)被我們創(chuàng)建完成斥难,路由匹配也成功了Vλ弧!

創(chuàng)建第一個(gè)模塊應(yīng)用

在真正的企業(yè)開發(fā)中哑诊,實(shí)質(zhì)我們需要分模塊來管理項(xiàng)目的群扶,Django 也提供了完善的模 塊劃分功能,很方便我們模塊開發(fā),下面我們來使用模塊劃分來完成一個(gè)項(xiàng)目案例竞阐。
首先進(jìn)入到項(xiàng)目的主目錄中來提茁,之后執(zhí)行 Django-admin startapp 模塊名稱:

# 進(jìn)入項(xiàng)目文件夾  
cd mysite/  
# 創(chuàng)建第一個(gè)博客應(yīng)用  
django-admin startapp blog 

完成后,項(xiàng)目結(jié)構(gòu)如下:

|-- mysite          # 項(xiàng)目名稱
    |-- mysite      # 根模塊
        |-- __init__.py # 模塊描述文件
        |-- settings.py # 項(xiàng)目的配置
        |-- wsgi.py # 實(shí)現(xiàn)了wsgi web網(wǎng)關(guān)接口
    |-- blog        # 子模塊
        |-- migrations  # 同步數(shù)據(jù)的遷移文件的文件夾
        |-- __init__.py # 模塊描述文件
        |-- admin.py    # 后臺管理系統(tǒng)用來管理子模塊中的模型類的文件
        |-- views.py    # 子模塊的視圖文件
        |-- urls.py # 需要我們創(chuàng)建馁菜,子模塊的路由文件
        |-- models.py   # 定義模型類
        |-- tests.py    # 測試文件
        |-- apps.py # 定義子模塊項(xiàng)目項(xiàng)的文件       
    |-- manage.py       # 項(xiàng)目的命令文件

模塊創(chuàng)建完成后,Django 根項(xiàng)目還不知道新增加了一個(gè)模塊铃岔,所以需要我們將新創(chuàng)建 的模塊告訴根項(xiàng)目汪疮,打開根項(xiàng)目模塊下的 setting.py 文件,找到 INSTALLED_APPS 選項(xiàng):

INSTALLED_APPS = [     
    'django.contrib.admin',     
    'django.contrib.auth',     
    'django.contrib.contenttypes',     
    'django.contrib.sessions',     
    'django.contrib.messages',     
    'django.contrib.staticfiles',  
    # 告訴根項(xiàng)目毁习,我新增了一個(gè)模塊  
    'blog', 
] 

現(xiàn)在智嚷,模塊應(yīng)用創(chuàng)建完畢,并且正常添加到了 Django 項(xiàng)目中了纺且。以后我們開發(fā)項(xiàng)目盏道, 實(shí)在是在不同的模塊上開發(fā),根項(xiàng)目只是作為管理整體項(xiàng)目存在载碌,我們不會再在根項(xiàng)目上創(chuàng) 建視圖和視圖函數(shù)了猜嘱。

創(chuàng)建模塊中第一個(gè)視圖處理函數(shù)

打開 myblog/views.py 視圖處理文件,添加視圖處理函數(shù)如下:

from django.shortcuts import render 
from django.http import HttpResponse 

def index(request):  
    print("博客首頁")  
    return HttpResponse("<h1>博客首頁</h1>") 

在模塊目錄下創(chuàng)建一個(gè)新的 urls.py 文件嫁艇,用來完成模塊本身的路由配置:

from django.conf.urls import url  
from . import views 

urlpatterns = [  
    url(r"^index/$",views.index,name="index"), 
] 

上面我們是在模塊本身中進(jìn)行的路由配置和視圖對應(yīng)函數(shù)朗伶,等完成這些配置后,我們需 要通知根項(xiàng)目步咪,將我們的配置添加到根項(xiàng)目中去论皆,在根項(xiàng)目的 urls.py 文件中配置,如下:

from django.conf.urls import url 
from django.contrib import admin 
from django.conf.urls import include 

# 導(dǎo)入視圖文件 
from . import views 

urlpatterns = [     
    url(r'^admin/', admin.site.urls),  
    url(r'^blog/',include("blog.urls")),  
    url(r"^$",views.index,name="index"), 
]  

至此猾漫,項(xiàng)目配置結(jié)束点晴,啟動項(xiàng)目。
項(xiàng)目運(yùn)行之后悯周,打開瀏覽器粒督,再次訪問 http://localhost:9000,出現(xiàn)項(xiàng)目默認(rèn)頁面

LC663E0K_Z39H`9J1SEG)(6.png

再次訪問 http://localhost:9000/blog/index队橙,出現(xiàn)博客應(yīng)用頁面
U}3{FM7T{J4LQZSAUM3E0HR.png

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末坠陈,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子捐康,更是在濱河造成了極大的恐慌仇矾,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件解总,死亡現(xiàn)場離奇詭異贮匕,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)花枫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門刻盐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來掏膏,“玉大人,你說我怎么就攤上這事敦锌÷睿” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵乙墙,是天一觀的道長颖变。 經(jīng)常有香客問我,道長听想,這世上最難降的妖魔是什么腥刹? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮汉买,結(jié)果婚禮上衔峰,老公的妹妹穿的比我還像新娘。我一直安慰自己蛙粘,他們只是感情好垫卤,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著出牧,像睡著了一般葫男。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上崔列,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天梢褐,我揣著相機(jī)與錄音,去河邊找鬼赵讯。 笑死盈咳,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的边翼。 我是一名探鬼主播鱼响,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼组底!你這毒婦竟也來了丈积?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤债鸡,失蹤者是張志新(化名)和其女友劉穎江滨,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體厌均,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡唬滑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片晶密。...
    茶點(diǎn)故事閱讀 37,997評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡擒悬,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出稻艰,到底是詐尸還是另有隱情懂牧,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布尊勿,位于F島的核電站归苍,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏运怖。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一夏伊、第九天 我趴在偏房一處隱蔽的房頂上張望摇展。 院中可真熱鬧,春花似錦溺忧、人聲如沸咏连。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽祟滴。三九已至,卻和暖如春歌溉,著一層夾襖步出監(jiān)牢的瞬間垄懂,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工痛垛, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留草慧,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓匙头,卻偏偏與公主長得像漫谷,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子蹂析,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評論 2 345

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

  • 點(diǎn)我查看本文集的說明及目錄舔示。 本項(xiàng)目相關(guān)內(nèi)容( github傳送 )包括: 實(shí)現(xiàn)過程: CH1 創(chuàng)建一個(gè)博客應(yīng)用 ...
    學(xué)以致用123閱讀 4,395評論 0 31
  • 版權(quán): https://github.com/haiiiiiyun/awesome-django-cn Aweso...
    若與閱讀 23,017評論 3 241
  • Django的來歷:python開發(fā)的! long long long years ago!勞倫斯出版集團(tuán)新聞 網(wǎng)...
    JAguys閱讀 333評論 0 0
  • 切換到創(chuàng)建項(xiàng)目的目錄 cd C:\Users\admin\Desktop\DjangoProject創(chuàng)建名為pr...
    在努力中閱讀 3,259評論 2 3
  • 一起特大非法經(jīng)營證券交易所掛牌上市銷售為一體的綜合性大學(xué)电抚。我是mac惕稻。我是mac。我是mac蝙叛。我就去做一些有意義的...
    23哈嘍閱讀 206評論 0 0