MVC處理模式
MVC是一種傳統(tǒng)的流程處理模式,是一種編程思想稻薇,主要由數(shù)據(jù)模型(Model)沟涨、控制器(Controller)以及視圖(View)組成的一個(gè)完成流程處理模式,首先由和用戶直接交互展示的視圖View可以發(fā)起請求晚伙,由控制器Controller進(jìn)行請求的分發(fā)吮龄,調(diào)用制定的數(shù)據(jù)處理函數(shù)對數(shù)據(jù)Model進(jìn)行增刪改查操作,完成一個(gè)功能的完整處理過程咆疗!
核心部分是控制器漓帚,主要實(shí)現(xiàn)視圖和數(shù)據(jù)模型之間的數(shù)據(jù)交互的!
Django在發(fā)展的過程中午磁,為了達(dá)到非常高效率的網(wǎng)站結(jié)構(gòu)搭建尝抖,提供給開發(fā)人員一個(gè)干凈整潔的項(xiàng)目結(jié)構(gòu),讓開發(fā)人員更多的精力集中在功能開發(fā)上迅皇、而不是技術(shù)實(shí)現(xiàn)上昧辽,所以Django對于常規(guī)的MVC處理模式進(jìn)行了升級——
MVT處理模式
Django是實(shí)現(xiàn)了MVT處理模式的高效率開發(fā)的web框架
MVT處理模式是在MVC處理模式上,升級得到的一種更加符合實(shí)際項(xiàng)目開發(fā)流程的處理思路登颓;在這種處理模式中搅荞,將功能比較單一的控制器Controller部分,封裝成了路由框咙!
由路由來完成請求的分發(fā)操作[路由是通過配置實(shí)現(xiàn)的]
python中模塊和框架有什么區(qū)別咕痛?
模塊:pygame\hashlib..:模塊指代的是大量函數(shù)的一個(gè)集合
框架:Django\Torando\Flask..:框架指代的各種模塊的集合以及封裝了大量的流程處理
python使用的web框架有很多,比較流行的有:
Django
Flask
Tornado
Django框架的優(yōu)勢
Django是一個(gè)python web框架喇嘱,主要用于進(jìn)行高效率的web軟件開發(fā)而衍生出來一個(gè)python組件
- 非常高效的web應(yīng)用搭建
- 非常高效的web功能處理
- 完善的ORM操作【程序中的數(shù)據(jù)和數(shù)據(jù)庫中的數(shù)據(jù)的對應(yīng)(增刪改查)關(guān)系】
- 非常強(qiáng)大的表單處理
- 非常強(qiáng)大的網(wǎng)頁模版視圖
- 非常強(qiáng)大的路由功能【url地址和處理函數(shù)之間的映射關(guān)系】
- 硬件性能突破緩存處理
...
使用Django
安裝:命令行輸入pip install django
使用django創(chuàng)建web項(xiàng)目
在目錄下輸入django-admin startproject <name>
django-admin startproject mysite
創(chuàng)建好的項(xiàng)目文件結(jié)構(gòu)
啟動并訪問項(xiàng)目
根目錄下執(zhí)行:
python manage.py runserver
打開瀏覽器茉贡,訪問http://localhost:8000
即可看到頁面
默認(rèn)為英文,可以轉(zhuǎn)換成中文顯示
在mysite/mysite/setting.py中
LANGUAGE_CODE ='en_us' -> 'zh_Hans'
默認(rèn)端口為8000者铜,可以調(diào)整
自定義啟動端口 啟動時(shí)輸入:
python manage.py runserver <port>
允許其他人訪問我們的網(wǎng)站
指定ip地址和端口腔丧,允許通過網(wǎng)絡(luò)地址訪問
python manage.py runserver <ip>:<port>
注意:在mysite/mysite/settings.py中配置文件放椰,修改如下配置
ALLOWSED_HOST=["*",]
在啟動項(xiàng)目時(shí),通過如下命令啟動:
python manage.py runserver 0.0.0.0:8000
這樣的布置服務(wù)器愉粤,可以用于web項(xiàng)目的開發(fā)砾医,實(shí)際部署要部署到相應(yīng)的服務(wù)器上
創(chuàng)建第一個(gè)視圖頁面
首先在mysite/mysite/目錄下,創(chuàng)建一個(gè)views.py視圖模塊
from django.http import HttpResponse
def index(request):
return HttpResponse("...")
其次在mysite/mysite/urls.py路由文件中科汗,添加url地址和處理函數(shù)之間的對應(yīng)關(guān)系
from django.conf.urls import url
from django.contrib import admin
from . import views
urlpatterns = [
url(r“^admin/”, admin.urls),
url(r”^index/$”, views.index, name=’index’)
]
詳細(xì)分析
Django是模塊化管理文件的藻烤,所以不同功能的代碼存放在不同的py文件中
路由相關(guān):urls.py
設(shè)置相關(guān):settings.py
頁面視圖:views.py
網(wǎng)頁視圖開發(fā):
導(dǎo)入一個(gè)響應(yīng)對象模塊:django.http.HttpResponse
可以通過響應(yīng)對象模塊,給瀏覽器返回?cái)?shù)據(jù)
def index(request):
return HttpResponse("...")
路由模塊:urls.py
什么是路由头滔?路由就是從現(xiàn)實(shí)生活中的路由器抽象出來的一個(gè)概念怖亭,表示的url地址和對應(yīng)的處理函數(shù)之間的對應(yīng)[映射]關(guān)系
可參考:https://www.zhihu.com/question/46767015?sort=created
路由器:ip地址[請求路徑]-->路由器-->個(gè)人PC[資源]
路由:url請求路徑-->路由-->處理函數(shù)
路由:一種映射,一種對應(yīng)坤检,表示的是一種綁定關(guān)系
from django.conf.urls import url[路由對象:可以綁定的一組對應(yīng)關(guān)系]
urlpatterns[
url(r’^login/$’, views.login, name=’login’),
url(),
url(),
...
]
url(
#第一個(gè)參數(shù) 正則 路徑 與處理函數(shù)綁定,
#第二個(gè)參數(shù) 處理函數(shù) 與路徑綁定(#可傳參),
(#第三個(gè)參數(shù) 給路由對象命名,)
)
視圖處理模塊:views.py
處理函數(shù)定義
創(chuàng)建子模塊應(yīng)用
django-admin startapp myblog
通過根項(xiàng)目來管理各個(gè)子項(xiàng)目模塊兴猩,實(shí)現(xiàn)項(xiàng)目功能的可伸縮性操作
附錄:虛擬開發(fā)環(huán)境
python2.X與python3.X的切換:
1、直接命令行切換python2 <--> python3
2早歇、pyenv軟件
3倾芝、創(chuàng)建虛擬環(huán)境——第三方模塊virtualenv
安裝:pip install virtualenv
在指定的文件夾中,創(chuàng)建一個(gè)虛擬環(huán)境
# 進(jìn)入django_1_11/目錄
cd worker/django_1_11/
# 創(chuàng)建一個(gè)虛擬環(huán)境
virtualenv d_1_11
# 進(jìn)入虛擬環(huán)境
./d_1_11/Scripts/activate
# 進(jìn)入django_1_8/目錄
cd worker/django_1_8/
# 創(chuàng)建一個(gè)虛擬環(huán)境
virtualenv d_1_8
# 進(jìn)入虛擬環(huán)境
./d_1_8/Scripts/activate
4箭跳、pycharm直接設(shè)置
在pycharm的設(shè)置settings中晨另,找project:project interpreter 添加虛擬環(huán)境,這樣pycharm中的該項(xiàng)目即會使用設(shè)置好的虛擬環(huán)境