Python開發【第二十一篇】:Web框架之Django【基礎】
一、 Django簡介
1.web框架簡介
具體介紹Django之前,必須先介紹WEB框架等概念。
web框架: 別人已經設定好的一個web網站模板,你學習它的規則,然後“填空”或“修改”成你自己需要的樣子。
一般web框架的架構是這樣的:
其它基於python的web框架,如tornado、flask、webpy都是在這個範圍內進行增刪裁剪的。例如tornado用的是自己的異步非阻塞“wsgi”,flask則只提供了最精簡和基本的框架。Django則是直接使用了WSGI,並實現了大部分功能。
Python的WEB框架有Django、Tornado、Flask 等多種,Django相較與其他WEB框架其優勢為:大而全,框架本身集成了ORM、模型綁定、模板引擎、緩存、Session等諸多功能。
2、 MVC/MTV介紹
MVC百度百科:全名Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟件設計典範,用一種業務邏輯、數據、界面顯示分離的方法組織代碼,將業務邏輯聚集到一個部件裏面,在改進和個性化定制界面及用戶交互的同時,不需要重新編寫業務邏輯。
通俗解釋:一種文件的組織和管理形式!不要被縮寫嚇到了,這其實就是把不同類型的文件放到不同的目錄下的一種方法,然後取了個高大上的名字。當然,它帶來的好處有很多,比如前後端分離,松耦合等等,就不詳細說明了。
模型(model):定義數據庫相關的內容,一般放在models.py文件中。
視圖(view):定義HTML等靜態網頁文件相關,也就是那些html、css、js等前端的東西。
控制器(controller):定義業務邏輯相關,就是你的主要代碼。
MTV: 有些WEB框架覺得MVC的字面意思很別扭,就給它改了一下。view不再是HTML相關,而是主業務邏輯了,相當於控制器。html被放在Templates中,稱作模板,於是MVC就變成了MTV。這其實就是一個文字遊戲,和MVC本質上是一樣的,換了個名字和叫法而已,換湯不換藥。
3.Django的MTV模型組織
Django結構:
1. 目錄結構規範
2. urls路由方式
3. settings配置
4. ORM操作
5. 模板渲染
6.其它
二、Django介紹
1.Django安裝
python3.5、pip3及pycharm專業版自行安裝。
(1)安裝Django:
這裏只介紹較為簡單的pip3命令安裝方式。
win+r,調出cmd,運行命令:pip3 install django,自動安裝Pypi提供的最新版本。
安裝完成後如下圖所示:
2.創建項目
- 終端命令:django-admin startproject sitename
- IDE創建Django程序時,本質上都是自動執行上述命令
其他常用命令:
python manage.py runserver 0.0.0.0
python manage.py startapp appname
python manage.py syncdb
python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser
3.配置文件
數據庫:DATABASES = { ‘default‘: {
{
{
‘ENGINE‘: ‘django.db.backends.mysql‘, ‘NAME‘:‘dbname‘, ‘USER‘: ‘root‘, ‘PASSWORD‘: ‘xxx‘, ‘HOST‘: ‘‘, ‘PORT‘: ‘‘, } }
DATABASES = {
‘default‘: {
‘ENGINE‘: ‘django.db.backends.sqlite3‘,
‘NAME‘: os.path.join(BASE_DIR, ‘db.sqlite3‘),
}
}
# 由於Django內部連接MySQL時使用的是MySQLdb模塊,而python3中還無此模塊,所以需要使用pymysql來代替
# 如下設置放置的與project同名的配置的 __init__.py文件中
import
pymysql
pymysql.install_as_MySQLdb()
模板:
TEMPLATE_DIRS = ( os.path.join(BASE_DIR,‘templates‘), )
靜態文件:
STATICFILES_DIRS = ( os.path.join(BASE_DIR,‘static‘), )
4.路由系統
1、單一路由對應 url(r‘^index$‘, views.index), 2、基於正則的路由 url(r‘^index/(\d*)‘, views.index), url(r‘^manage/(?P<name>\w*)/(?P<id>\d*)‘, views.manage), 3、添加額外的參數 url(r‘^manage/(?P<name>\w*)‘, views.manage,{‘id‘:333}), 4、為路由映射設置名稱 url(r‘^home‘, views.home, name=‘h1‘), url(r‘^index/(\d*)‘, views.index, name=‘h2‘),
1.瀏覽器(socket客戶端):
2. socket.connect(ip,端口)
3. socket.send("http://www.xiaohuar.com/index.html....")
規則:http協議
GET請求:
"GET /index.html?k1=1&k2=2 Http/1.1\r\nhost:www.xiaohuar.com\r\ncontent-type:application/json\r\n\r\n"
請求頭和請求體使用\r\n\r\n分割,前面頭,後面是體
POST請求:
"POST /index.html?k1=1&k2=2 Http/1.1\r\nhost:www.xiaohuar.com\r\ncontent-type:application/json\r\n\r\nusername=alex&pwd=123123"
請求頭和請求體使用\r\n\r\n分割,前面頭,後面是體
www.xiaohuar.com/index.html?k1=1&k2=2
6. 獲取相應
響應頭,響應體 = data.split(‘\r\n\r\n‘)
7. 斷開連接
Python開發【第二十一篇】:Web框架之Django【基礎】