1. 程式人生 > >web框架之Django(python3入門)

web框架之Django(python3入門)

mac os x shortcut nal 括號 direct control == 美女 分開

一、初識Django

Django 是一個web框架
web框架的本質
- web框架的本質就是一個socket服務端
b/s架構:瀏覽器---服務器,本質也是c/s架構

二、HTTP協議

技術分享圖片
http請求協議:
    請求首行:
        請求的方法 空格 請求地址 空格 請求協議
            GET        /index     HTTP/1.1\r\n
    請求頭:
        (key:value的形式展現)
        Connection: keep-alive\r\n
        Pragma: no-cache\r\n
        Cache
-Control: no-cache\r\n Upgrade-Insecure-Requests: 1\r\n User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36\r\n Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\r\n Accept
-Encoding: gzip, deflate, br\r\n Accept-Language: zh-CN,zh;q=0.9\r\n\r\n 請求體: 可以攜帶data數據(向服務器發送的數據) 如:用戶名/密碼等信息
http請求協議 技術分享圖片
http響應協議:
    響應首行:
        HTTP/1.1 200 OK \r\n
    響應頭:
        key:value \r\n
        xx:xx \r\n
        yy:yy \r\n
    響應體:
        響應數據...
http響應協議

三、Web框架簡介

把一個請求拆分成幾部分,每個部分幹相同的事
Python中的web框架:
    Django:大而全的框架
    flask:輕量級 微框架
    Tornado:高性能的框架

四、Django的安裝和使用

- 安裝Django的三種方式:
    1 在cmd窗口下:pip3 install django == 1.11.9
    2 在pycharm的Terminal窗口下: pip3 install django == 1.11.9
    3 在pycharm - setting中安裝,選擇版本號: 1.11.9
- 卸載Django
    1 pip3 unistall django
    2 在pycharm-setting中進行卸載
- 安裝完成後dgango後會在python36\Scripts,會多一個django-admin.exe
- 創建Django項目
    命令行 django-admin startproject myfirstdjango(了解就行)

五、Django項目的目錄結構

技術分享圖片
- manage.py 項目入口 運行項目需要用到
- templates文件夾:放模板文件,放html模板

- 項目名的文件夾(*****現階段需要記住的)
    setting.py 項目配置文件(整個項目的配置信息)    *****
    urls.py 路由和函數的映射關系  ***** 
    wsgi.py django框架幫咱寫的socket

- app名字的文件夾
    migrations 數據庫遷移相關的,記錄變化的文件
    admin.py 後臺管理相關(知道就行)
    apps.py app的配置信息(app自己的配置信息)
    models.py 數據庫相關,函數取數據用的 *****
    tests.py 測試相關的
    views.py 視圖(業務邏輯)   *****

- app的概念(每個django項目至少有一個app!!!)
    大學 ---- django項目
    xx學院 ---- 一個個的app
    創建app的命令(新建app01)
        python3 manage.py startapp app01
目錄結構

六、運行Django項目

技術分享圖片
python3 manage.py runserver
重點*****
    安裝django
    創建django項目
    創建app
    運行項目
第一種方式-命令行 技術分享圖片
- pycharm中創建項目 輸入項目名稱+自定義app名稱+解釋器選擇
- pycharm中運行項目 綠色箭頭運行
第二種方式-用pycharm

七、Django框架的簡單使用

技術分享圖片
- django項目中重點需要關註的文件夾:
    - urls.py
    - views.py
    - models.py
Django項目文件夾中重點關註的文件 技術分享圖片
1 在瀏覽器輸入 http://127.0.0.1/index 並在頁面顯示hello django
    > 首先在views.py中鍵入新手三件套
        from django.shortcuts import render
        from django.shortcuts import HttpResponse
        from django.shortcuts import redirect
    > 其次在views.py中輸入index頁面的函數
        def index(request):
            return HttpResponse(hello django)     #可以向瀏覽器返回字符串
    > 接著在urls.py中新增路由和函數的映射關系
        from app01 import views
        urlpatterns = [
            url(r^index/, views.index),
        ]
    > 接著點擊綠色箭頭運行該項目
    > 最後打開瀏覽器輸入 http://127.0.0.1/index查看頁面顯示內容
Django框架的簡單使用之一 技術分享圖片
2 在瀏覽器輸入 http://127.0.0.1/index 向瀏覽器返回一個頁面
    > 首先在views.py中鍵入新手三件套
        from django.shortcuts import render
        from django.shortcuts import HttpResponse
        from django.shortcuts import redirect
    > 其次在views.py中輸入index頁面的函數
        def index(request):
            #render是一個方法,第一個參數傳request對象,第二個參數是模板文件的名字
            return render(request,index.html)   
    > 接著在templates文件夾中新建html頁面,命名問index.html,並在頁面中隨意寫一些內容
        <body>
        <h1>django的index頁面</h1>
        <a href="https://baidu.com">點我看美女</a>
        </body>
    > 在瀏覽器輸入 http://127.0.0.1/index 查看結果
Django框架的簡單使用之二 技術分享圖片
3 在瀏覽器輸入 http://127.0.0.1/index 重定向到www.baidu.com
    > 首先在views.py中鍵入新手三件套
        from django.shortcuts import render
        from django.shortcuts import HttpResponse
        from django.shortcuts import redirect
    > 其次在views.py中輸入index頁面的函數
        def index(request):
            # 返回重定向
            # 1xx 接受的請求正在處理,信息性狀態碼
            # 2xx 成功狀態碼
            # 3xx 重定向狀態碼
            # 4xx 客戶端錯誤狀態碼
            # 5xx 服務器錯誤狀態碼
            return redirect(https://www.baidu.com)
    > 在瀏覽器輸入 http://127.0.0.1/index 查看結果
Django框架的簡單使用之三

八、Django框架層面分析

技術分享圖片
- 路由層:
- 基本使用
    # url是一個函數,函數參數,第一個參數是一個正則表達式
    # 用戶請求的路徑只有匹配成功,才去執行後面的函數
    url(r^index$,views.index)
路由層 技術分享圖片
- 無名分組
    url(r^index/(\d+)/(\d+), views.index)
    括號內的內容會被分組區分開,當作一個個參數,傳入到都好後面的views.index視圖函數中
    視圖函數會接受這些參數
無名分組 技術分享圖片
- 有名分組
    url(r^index/(?P<cc>\d+)/(?P<ee>\d+), views.index)
    括號內的內容會被分組分出來,當作參數,以key:value的形式傳入後面的視圖函數
    視圖函數會接受這些參數
有名分組 技術分享圖片
- 反向解析
    1 補充重定向
    2 反向解析,通過名字,反解出名字對應的url地址
        例1:應用在視圖函數中
        urls.py  
            url(r^test222/$, views.test,name=ttt)

        views.py
            from django.shortcuts import reverse
            def index(request):
                url = reverse(ttt)
                return redirect(url)

        例2:應用在模板中
            <a href="{% url ‘ttt‘ %}">點我看新美女</a>
反向解析 技術分享圖片
- 路由分發
    例如:
        使用命令創建app02  python3 manage.py startapp app02
        ### 註意,新建app一定要在setting.py中進行註冊
            ### 註冊app,兩種方式都可以,官方推薦使用下面的第一種
            找到INSTALLED_APPS = [],並在其中添加以下命令,
            1 app02.apps.App01Config,
            2 app02,

        使用方式:
            1 在項目文件夾的urls.py中,控制不同app的urls.py
                urlpatterns = [
                url(rapp01/,include(app01.urls)),   #正則部分不能加結束符$
                url(rapp02/,include(app02.urls)),   #正則部分不能加結束符$
                ]
            2 在app01文件夾中的urls.py中,控制本app的路由
                urlpatterns = [
                    url(r^app01test/, views.test),
                ]
            3 在app02文件夾中的urls.py中,控制本app的路由
                urlpatterns = [
                    url(r^app02test/, views.test),    #給該條路由重命名為ttt
                ]
            4 在不同app的文件夾中的views.py文件中輸入定義test函數

            5 在web頁面中輸入測試:http://127.0.0.1:8000/app01/app01test/
                                http://127.0.0.1:8000/app02/app02test/
路由分發 技術分享圖片
- django2.0版本的path
    - django2.x的re_path就是1.x的url
    - django2.x的path是新增的功能
        path(準確路徑,view.test,name=ttt)
Django2.x版本的path了解

web框架之Django(python3入門)