Django安裝和web框架原理

Django安裝和web框架原理

  • 在PyCharm中安裝html

    • 5XbagS.md.png
    • 在cmd中輸入
      • django-admin startproject 項目名
        • 若是報錯 不是內部或外部命令,也不是可運行的程序
        • 須要添加環境變量
        • 5XbrQh.md.png
      • 運行Django項目
        • 切換到項目名目錄下
        • python manage.py runserver 或者 python manage.py runserver 127.0.0.1:8080 或者 python manage.py runserver 8090
    • 在PyCharm中新建
      • File----》Now Project---->Django---->路徑
        • img
        • 5XbCcH.md.png
      • 運行方式
        • 5XbEfN.md.png
        • 5XbeXu.png
  • 在一個新的虛擬環境中安裝python

    • virtualenvwrapper安裝與使用
      windows下安裝
        一、pip install virtualenvwrapper-winlinux

           注:linux下運行 pip install virtualwrapperweb

        二、建立虛擬環境---mkvirtualenv 環境名django

        三、列出全部的虛擬環境---lsvirtualenv|workonwindows

        四、退出虛擬環境---deactivate瀏覽器

        五、刪除虛擬環境---rmvirtualenv 環境名服務器

        六、進入虛擬環境---workon 環境名app

        七、跳轉到虛擬環境所在的目錄---cdvirtualenv框架

        八、查看全部安裝包---lssitepackages

        九、修改mkvirtualenv的默認路徑

            建立的虛擬環境默認是在---c:\user\用戶名\envs
            能夠在系統變量中設值WORKON_HOME f:\envs

            之後建立的虛擬環境都會在你本身設置的目錄下

        十、建立虛擬環境時指定python版本

           mkvirtualenv --python=C:\Program Files\Python36\python.exe 環境名 

        十一、安裝diango---pip install diango 

        十二、建立項目 django-admin startproject 項目名

        1三、啓動項目 python [img](file:///C:\Users\12445\AppData\Local\Temp%W@GJ$ACOF(TYDYECOKVDYB.png)manage.py runserver

        1四、建立app python [img](file:///C:\Users\12445\AppData\Local\Temp%W@GJ$ACOF(TYDYECOKVDYB.png)manage.py startapp app名稱

  • web框架原理

    • http協議
      • 即超文本傳輸協議,是一種用於分佈式、協做式和超媒體信息系統的應用層協議。HTTP是萬維網的數據通訊的基礎。

      • HTTP是客戶終端(用戶)和服務端(網站)請求和應答的標準(tcp協議)

      • http協議工做原理:

        1. 客戶端鏈接到Web服務器
        2. 發送http請求
        3. 服務器接受請求並返回http響應
        4. 釋放鏈接tcp鏈接
        5. 客戶端瀏覽器解析html內容
      • 例如:在瀏覽器地址欄鍵入URL,按下回車以後會經歷如下流程:

        1. 瀏覽器向 DNS 服務器請求解析該 URL 中的域名所對應的 IP 地址;
        2. 解析出 IP 地址後,根據該 IP 地址和默認端口 80,和服務器創建TCP鏈接;
        3. 瀏覽器發出讀取文件(URL 中域名後面部分對應的文件)的HTTP 請求,該請求報文做爲 TCP 三次握手的第三個報文的數據發送給服務器;
        4. 服務器對瀏覽器請求做出響應,並把對應的 html 文本發送給瀏覽器;
        5. 釋放 TCP鏈接;
        6. 瀏覽器將該 html 文本並顯示內容;
      • http請求方法
        • get 向指定的資源發出「顯示」請求
        • head 與GET方法同樣,都是向服務器發出指定資源的請求
        • post 向指定資源提交數據,請求服務器進行處理(例如提交表單或者上傳文件)
        • put 向指定資源位置上傳其最新內容。
        • delete 請求服務器刪除Request-URI所標識的資源
        • trace 回顯服務器收到的請求,主要用於測試或診斷。
        • options 這個方法可以使服務器傳回該資源所支持的全部HTTP請求方法。
        • connect HTTP/1.1協議中預留給可以將鏈接改成管道方式的代理服務器
      • 常見錯誤警告
        • 1xx消息——請求已被服務器接收,繼續處理
        • 2xx成功——請求已成功被服務器接收、理解、並接受
        • 3xx重定向——須要後續操做才能完成這一請求
        • 4xx請求錯誤——請求含有詞法錯誤或者沒法被執行
        • 5xx服務器錯誤——服務器在處理某個正確請求時發生錯誤
      • http請求格式(request)
        • 5XbUZ9.md.png

        • 請求行

          • GET /home/ HTTP/1.1
        • 請求頭

          • Content-Type: text/html; charset=utf-8
        • 空行

          • \r\n\r\n
        • 請求數據(無關緊要)

      • http響應格式(response)
        • 5XbKIA.md.png
        • 響應行
          • HTTP/1.1 200 OK
        • 響應頭(給瀏覽器看的那些信息)
        • 空行
        • 響應數據(真正顯示在瀏覽器上顯示給用戶看)
    • html文件實例

      • """
        根據URL中不一樣的路徑返回不一樣的內容--函數進階版
        返回獨立的HTML頁面
        """
        
        import socket
        sk = socket.socket()
        sk.bind(("127.0.0.1", 8080))  # 綁定IP和端口
        sk.listen()  # 監聽
        
        
        # 將返回不一樣的內容部分封裝成函數
        def index(url):
            # 讀取index.html頁面的內容
            with open("index.html", "r", encoding="utf8") as f:
                s = f.read()
            # 返回字節數據
            return bytes(s, encoding="utf8")
        
        
        def home(url):
            with open("home.html", "r", encoding="utf8") as f:
                s = f.read()
            return bytes(s, encoding="utf8")
        
        
        # 定義一個url和實際要執行的函數的對應關係
        list1 = [
            ("/index/", index),
            ("/home/", home),
        ]
        
        while 1:
            # 等待鏈接
            conn, add = sk.accept()
            data = conn.recv(8096)  # 接收客戶端發來的消息
            # 從data中取到路徑
            data = str(data, encoding="utf8")  # 把收到的字節類型的數據轉換成字符串
            # 按\r\n分割
            data1 = data.split("\r\n")[0]
            url = data1.split()[1]  # url是咱們從瀏覽器發過來的消息中分離出的訪問路徑
            conn.send(b'HTTP/1.1 200 OK\r\n\r\n')  # 由於要遵循HTTP協議,因此回覆的消息也要加狀態行
            # 根據不一樣的路徑返回不一樣內容
            func = None  # 定義一個保存將要執行的函數名的變量
            for i in list1:
                if i[0] == url:
                    func = i[1]
                    break
            if func:
                response = func(url)
            else:
                response = b"404 not found!"
        
            # 返回具體的響應消息
            conn.send(response)
            conn.close()
相關文章
相關標籤/搜索