Django框架简介
?Django框架簡(jiǎn)介
MVC框架和MTV框架
MVC,全名是Model View Controller,是軟件工程中的一種軟件架構(gòu)模式,把軟件系統(tǒng)分為三個(gè)基本部分:模型(Model)、視圖(View)和控制器(Controller),具有耦合性低、重用性高、生命周期成本低等優(yōu)點(diǎn)。
想要更詳細(xì)的了解MVC模式? >>?點(diǎn)我
Django框架的設(shè)計(jì)模式借鑒了MVC框架的思想,也是分成三部分,來(lái)降低各個(gè)部分之間的耦合性。
Django框架的不同之處在于它拆分的三部分為:Model(模型)、Template(模板)和View(視圖),也就是MTV框架。
Django的MTV模式
? ? ? ?Model(模型):負(fù)責(zé)業(yè)務(wù)對(duì)象與數(shù)據(jù)庫(kù)的對(duì)象(ORM)
? ? ? ?Template(模版):負(fù)責(zé)如何把頁(yè)面展示給用戶
? ? ? ?View(視圖):負(fù)責(zé)業(yè)務(wù)邏輯,并在適當(dāng)?shù)臅r(shí)候調(diào)用Model和Template
此外,Django還有一個(gè)urls分發(fā)器,它的作用是將一個(gè)個(gè)URL的頁(yè)面請(qǐng)求分發(fā)給不同的view處理,view再調(diào)用相應(yīng)的Model和Template
Django框架圖示
?
?
Django安裝和基本使用
安裝Django,指定國(guó)內(nèi)pip源
pip3 install django==1.11.18 -i https://pypi.douban.com/simple/Django官網(wǎng)下載頁(yè)面
?
創(chuàng)建Django項(xiàng)目
下面的命令創(chuàng)建了一個(gè)名為"webapp"的Django 項(xiàng)目:
django-admin startproject webapp?
項(xiàng)目創(chuàng)建完成,會(huì)在當(dāng)前目錄下生成一個(gè)目錄
webapp/ ├── manage.py # 管理文件 └── mysite # 項(xiàng)目目錄├── __init__.py├── settings.py # 配置├── urls.py # 路由 --> URL和函數(shù)的對(duì)應(yīng)關(guān)系└── wsgi.py # runserver命令就使用wsgiref模塊做簡(jiǎn)單的web server?
運(yùn)行Django項(xiàng)目:
默認(rèn)是8000端口
[root@yunwei-test webapp]# python3 manage.py runserver 0.0.0.0:9999?
pycharm創(chuàng)建Django項(xiàng)目
pycharm會(huì)自動(dòng)創(chuàng)建模板目錄
?
啟動(dòng)項(xiàng)目
?
?
Django settings
# 項(xiàng)目根目錄 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))# ip地址訪問(wèn)權(quán)限 ALLOWED_HOSTS = ['*'] # app注冊(cè)列表 INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles', ]# 中間件 MIDDLEWARE = ['django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.middleware.common.CommonMiddleware','django.middleware.csrf.CsrfViewMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware', ]# 模板文件(HTML文件) TEMPLATES [{'DIRS': [os.path.join(BASE_DIR, 'templates')] # HTML文件路徑,pycharm會(huì)自動(dòng)創(chuàng)建和添加。 命令行創(chuàng)建項(xiàng)目需要自己添加 }]# 數(shù)據(jù)庫(kù)配置 DATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3', # 數(shù)據(jù)庫(kù)類型'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), # 要連接的庫(kù)} }# 靜態(tài)文件別名,以/static/開(kāi)頭 STATIC_URL = '/static/' STATICFILES_DIRS = [os.path.join(BASE_DIR,'static') # 實(shí)際的靜態(tài)文件目錄路徑 ] django配置文件?
Django創(chuàng)建 app
一個(gè)Django項(xiàng)目可以分為很多個(gè)APP,用來(lái)隔離不同功能模塊的代碼。
python manage.py startapp app01?
執(zhí)行命令后,項(xiàng)目目錄下多出一個(gè)app01的文件夾,目錄結(jié)構(gòu)如下:
[root@yunwei-test webapp]# tree app01/ app01/ ├── admin.py # admin管理后臺(tái) ├── apps.py # app ├── __init__.py ├── migrations # 數(shù)據(jù)庫(kù)遷移的文件 │?? └── __init__.py ├── models.py # ORM ├── tests.py └── views.py # 函數(shù)功能?
?在settings配置文件中注冊(cè)app
# 在app列表中添加上INSTALLED_APPS = ['app01.apps.App01Config' ]
?
?
?
Django函數(shù)
from django.shortcuts import HttpResponse, render, redirect?
參數(shù)
必須接受一個(gè)參數(shù) request
所有和瀏覽器請(qǐng)求相關(guān)的都在 request 中 request.method GET POST(大寫) # 獲取請(qǐng)求方式request.POST.get('input中的name屬性值') # 獲取form表單提交的數(shù)據(jù),字符串類型(form表單使用POST提交時(shí))
request.GET # url地址上攜帶的參數(shù) 例如:http://127.0.0.1/login/?user=xxx&pwd=xxx 獲取到的數(shù)據(jù): <QueryDict: {'user': ['xxx'], 'pwd': ['xxx']}>
request.path_info # url路徑
返回值
必須是一個(gè)HttpResponse對(duì)象
?
HttpResponse
內(nèi)部傳入一個(gè)字符串參數(shù),返回給瀏覽器。
例如:
def index(request):# 業(yè)務(wù)邏輯代碼return HttpResponse("OK")?
render
除request參數(shù)外還接受一個(gè)待渲染的模板文件和一個(gè)保存具體數(shù)據(jù)的字典參數(shù)。
將數(shù)據(jù)填充進(jìn)模板文件,最后把結(jié)果返回給瀏覽器。(類似于我們上面用到的jinja2)
例如:
def index(request):# 業(yè)務(wù)邏輯代碼return render(request, "index.html", {"name": "alex", "hobby": ["燙頭", "泡吧"]})?
redirect重定向
接受一個(gè)URL參數(shù),表示跳轉(zhuǎn)到指定的URL。
例如:
def index(request):# 業(yè)務(wù)邏輯代碼return redirect("/home/")?
重定向
return redirect('/home/') ?返回瀏覽器狀態(tài)碼:302? ?和響應(yīng)頭:Location:?/home/ 瀏覽器會(huì)再次向返回的URL地址發(fā)起一次GET請(qǐng)求,獲取跳轉(zhuǎn)后的頁(yè)面。?
?
轉(zhuǎn)載于:https://www.cnblogs.com/root0/p/10751020.html
總結(jié)
以上是生活随笔為你收集整理的Django框架简介的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Percona XtraBackup 关
- 下一篇: Go 定时器内部实现原理剖析