1. 程式人生 > >Python開發【第二十一篇】:Web框架之Django【基礎】

Python開發【第二十一篇】:Web框架之Django【基礎】

name line 控制 creat js等 nec serve pan xiaohua

一、 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【基礎】