day16 2018-08-05 Django框架 以前的內容: - Python基礎 - 前端部分 講課內容: 1. web框架的本質(瞭解就行) 用戶的瀏覽器(socket客戶端) 和 網站的服務器(socket服務端)之間 socket HTTP協議: 1. 請求(request) 2. 響應(response) web框架本質 0. socket收發消息 1. 訪問不一樣的URL返回不一樣的頁面 用戶訪問的具體路徑 --> 執行不一樣的函數 --> 返回不一樣的結果 2. 不一樣用戶訪問相同的URL返回不一樣的頁面內容 字符串的替換 Web框架的本質三大部分: a. 收發socket消息 web服務器 web應用程序 b. 根據不一樣的請求執行不一樣的函數返回不一樣的內容 c. 字符串替換 Django開發階段使用 wsgiref 模塊來處理socket消息 Django部署到線上使用 uWsgi/gunicorn 模塊來處理socket消息 Python中 web服務器程序和Web應用程序之間傳遞消息: WSGI協議 Python裏面Web框架的分類: 1. 本身實現b和c,使用第三方的a: Django框架 2. 本身實現b,使用第三方的a和c: Flask 3. 本身實現a\b\c: Tornado 2. django安裝和介紹 (本身走一遍就OK) 1. Django介紹 版本:1.8.3 1.11.x 2.x 2. 安裝 pip3 install django==1.11.11 pip3 list 查看當前Python解釋器安裝了哪些第三方包 pip3 install django==1.11 -i https://pypi.tuna.tsinghua.edu.cn/simple pip3 uninstall django 3. 經常使用命令 1. 建立Django項目 1. 命令行建立 django-admin startproject s21django 在當前目錄下建立一個名爲 s21django 的Django項目 2. PyCharm建立 見羣內截圖 3. 啓動Django項目 1. PyCharm裏面啓動: 點綠色的小三角 2. 命令行啓動 1. 切換到項目目錄下! 2. python manage.py runserver python manage.py runserver 127.0.0.1:8090 python manage.py runserver 8091 4. 建立APP 1. 在PyCharm建立 2. 在命令行建立 1. 切換到項目目錄下! 2. python manage.py startapp app名字 3. 在settings.py裏面註冊你新建立的那個app 5. Django項目使用靜態文件的配置 1. 在項目目錄下新建一個保存靜態文件的文件夾 2. 告訴Django你去我上面新建的路徑去找靜態文件 settings.py中 加上相應的配置項: # 靜態文件存放的路徑別名,我在HTML文件中使用的那個名字 STATIC_URL = '/static/' # 靜態文件實際保存的目錄是哪一些 STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'static') ] 3. 在HTML頁面中使用剛纔配置的靜態文件 /static/... 來引用 3. MVC和MTV (瞭解便可) 1. MVC --> Model View Control 2. MTV --> Model Template views 4. 基本路由系統 (urls.py) 1. 路由是一個有順序的列表,從上到下去匹配 2. 路由的路徑是根據正則表達式來匹配的 5. 基本視圖函數(views.py) 1. 基礎必會三件套 from django.shortcuts import HttpResponse, render 1. HttpResponse('字符串') 2. render(request, 'xx.html') 3. redirect --- ↑ Django基礎部分 ----- 6. 基本模板引擎(templates/xx.html) 1. render(request, 'xx.html', {"k": "v"}) 2. 經常使用語法: 1. {{ 變量名 }} 2. {{ 變量名.key }} 3. for循環 {% for x in xx %} {{x}} {% endfor %} 4. if判斷 {% if 條件 %} ... {% else %} ... {% endif %} 7. ORM(單表) 1. 用pymysql鏈接MySQL數據庫查詢數據 1. import pymysql 2. 創建鏈接 3. 獲取光標 4. 執行SQL語句 5. 獲取數據 6. 關閉光標 7. 關閉鏈接 2. 使用pymysql鏈接數據庫缺點: 1. 麻煩 2. 本身寫SQL語句!!! 3. 使用ORM工具鏈接數據庫 - 優勢: 1. 不用本身寫SQL語句!!! - 缺點: 1. 執行效率不高 4. ORM是個啥? 1. 對象關係映射 類 數據表 屬性 字段 對象 數據行 2. Django中如何使用ORM 1. 告訴Django鏈接哪一個MySQL數據庫(settings.py) 2. 告訴Django用pymysql鏈接MySQL數據庫 (默認用的是MySQLDB) 3. 去app/models.py裏面建立類 4. 讓Django去數據庫幫我建立類對應的數據表 1. python manage.py makemigrations --> 將models.py的改動記錄在小本本上 2. python manage.py migrate --> 將變動記錄翻譯成SQL語句,去數據庫執行 3. ORM的使用 1. 操做數據表 2. 操做數據行 5. ORM單表的增刪改查 1. 查詢 models.Publisher.objects.all() --> 查詢全部的出版社數據 models.Publisher.objects.get(id=1) --> 查詢id=1的那個出版社 2. 增長 models.Publisher.objects.create(name='xx') --> 建立一個名爲xx的出版社 3. 刪除 models.Publisher.objects.get(id=2).delete() --> 刪除id=2的那個出版社 4. 編輯 obj = models.Publisher.objects.get(id=2) --> 找到要編輯的對象 obj.name = "新值" --> 修改 obj.save() --> 將修改同步到數據庫 8. request相關的知識點: 1. request.method --> 獲取用戶請求的方法 - GET --> 表示用戶向我要一個頁面這種操做 - POST --> 表示用戶向我發送一些數據 2. request獲取URL中的參數 /xx/?name=alex&age=9000 request.GET --> 大字典 - request.GET['name'] --> 不推薦 - request.GET.get("name") --> 推薦 3. request.POST --> 一個大字典,存的是用戶post發過來的數據 1. request.POST['key'] --> 不推薦 2. request.POST.get('key', '默認值') 作人戾氣不要過重!!! 練習題: 1. 什麼是wsgi? 2. mvc和mtv的區別以及django屬於哪種? 3. django常見命令 4. 如何經過GET和POST向後臺傳參 5. django中如何獲取POST和GET傳入的參數 6. 模板渲染時如何獲取列表或字典的元素(根據索引)? 7. 什麼是ORM? 8. 建立django程序時須要注意的配置有哪些? 9. 請寫出流程:建立一張表並對其進行增刪改查 做業:主機管理【01】:用戶管理 1. 基於django建立表: 用戶表:ID、用戶名、密碼 2. 用戶登陸(md5加密) 3. 用戶管理:增刪改查 4. 套用BootStrap樣式
做業:
1.練習題
2.做業:主機管理 01:用戶管理 1234 注意加密
02主機管理
03分組
簡易版的socketserver
\r\n換行
http工做原理
經常使用get、post
http狀態碼:
記得字符串轉成字節類型
替換後記得賦給新的變量
例子:獲取;函數版,靜態獲取,動態獲取
小結:
web框架本質
web服務器:接收消息
web應用程序:真正幹活,處理數據
django開發階段使用--wsgiref模塊來處理socket消息
Django部署到線上使用 uWsgi/gunicorn 模塊來處理socket消息
python中 wsgi協議(web服務器與web應用程序之間傳遞消息)
安裝django
templates模板
運行:要運行項目,進入項目文件夾,點擊上方的小三角
mysite總項目
項目目錄下:切換到python manage.py runserver
建立app:python manage.py startapp app名字
三件套
from django.shortcuts import HttpResponse, render
1. HttpResponse('字符串')
2. render(request, 'xx.html')
3. redirecthtml
讓用戶本身去跳轉,建立後的界面
static靜態文件夾
鏈接數據庫4步!
默認settings修改
兩條執行命令
1. python manage.py makemigrations --> 將models.py的改動記錄在小本本上
2. python manage.py migrate --> 將變動記錄翻譯成SQL語句,去數據庫執行
orm的使用:
操做數據表
操做數據行
圖書管理系統例子。出版社列表(查詢、新增、刪除、編輯)。
編輯:跳轉到編輯界面,提交後顯示修改後的內容
1.獲取用戶要編輯的出版社的id
2.用id去數據庫中找到這條記錄
3.在頁面上展現原來的出版社名字
obj = models.Publisher.objects.get(id=2) --> 找到要編輯的對象
obj.name = "新值" --> 修改
obj.save() --> 將修改同步到數據庫前端
urls---views----html