<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      01web框架的本質

      學習內容

      這個階段的學習內容
      	1. Django基礎
      	2. Redis基礎
      	3. Django實戰項目
      	4. linux基礎
      
      django這個階段,知識點很多,很碎,要記憶的很多
      所需知識點:
      	 Python的基礎語法
      		函數   模塊與包   面向對象     安裝MySQL  創建數據庫 前端  
      

      回顧知識

      • python,pycharm的含義是什么?這兩者的關系是什么?
        python是個解釋器,將符合python這門語言的語法代碼解釋給電腦聽,并且讓電腦執行
        pycharm說白了就是一個牛逼的記事本,記事本不太好的地方,沒有代碼的提示,沒有這些牛逼的功能的
        pycharm配置好了python的解釋器以后,就擁有這些代碼提示,鼠標點一下就可以直接運行python代碼

      • 我們的代碼有沒有問題,取決于運行的結果的,不能依賴pycharm(只是一個好用的工具罷了),代碼出現了紅色波浪線并一定會報錯

      • 運行python代碼的方式:

        • 臨時的
          進入Python解釋器內執行代碼,解釋器一旦關閉,代碼就失效了
          作用:一般只有臨時的調試一些簡單的代碼

        • 永久的
          好處:代碼永遠都在,代碼保存在一份文件中,可以持久化保存
          文件的后綴名字可以是任意的(.txt,.dwda,.gfdg),但一般使用.py

      • 運行python文件本質

        python解釋器的路徑 Python的文件的路徑

        image-20230323021810251

        image-20230323021951345

      環境變量

      解決下面的錯誤:
      'xxx' 不是內部或外部命令,也不是可運行的程序或批處理文件
      解決方式:去配置環境變量

      同學提問:普通記事本代碼有Python環境就可以運行的嗎?
      運行Python的代碼 ,只需要Python解釋器

      web框架

      三大類

      基礎的 沒他不行 Python基礎 前端 HTML css js

      進階型 沒他了也能玩的轉,但是很多問題會出現 MySQL

      精華型 沒他也可以,但是有他,就可以簡化我們很多的事情 框架 jquery bootstarp 內部的一些代碼

      通過一個需求,我們自己做一個web框架

      需求:做一個網站出來

      網絡編程(基于網絡傳輸信息) -- socket

      bs架構的本質是cs架構

      hhtp,https(加密,更安全)通信協議 根據規則來進行通信

      # 寫代碼  用socket 實現網絡傳遞信息
      import socket
      #  1. 買手機
      server = socket.socket()
      # 2.    綁定手機卡
      # IP    利用IP   可以找到世界上任意一臺電腦  IP   
      # PORT  利用port 可以找到一臺電腦上任意一個程序   
      # IP+PORT      可以找到世界上任意一臺電腦上的一個程序
      server.bind(('127.0.0.1',8000))
      # 3. 開機
      server.listen()
      while True:
          # 4. 等電話的鏈接
          conn,addr = server.accept()
          # 5. 收發消息
          data = conn.recv(1024)
          print(data)
          conn.send(b'hello')
          # 6.掛電話
          conn.close()
      # 7.關機
      server.close()
      

      運行這份代碼,在瀏覽器的導航欄中輸入:127.0.0.1:8000結果發現下面這個錯誤

      image-20230323024431849

      為什么會出現這個錯誤?

      因為沒有遵守http協議

      用戶的瀏覽器已輸入網址,會給服務端發送數據,發什么數據,收什么數據,怎么發?怎么收?

      必須要有規定,不然就亂了,無規則不成方圓,那么這些規則,我們叫做http協議

      修改代碼,增加一行,來遵守HTTP協議

      import socket
      
      # 1.買手機
      server = socket.socket()
      # 2.綁定手機號
      """
      IP    利用IP   可以找到世界上任意一臺電腦  IP   
      PORT  利用port 可以找到一臺電腦上任意一個程序   
      IP+PORT      可以找到世界上任意一臺電腦上的一個程序
      """
      server.bind(('127.0.0.1', 8000))
      # 3.開機
      server.listen()
      while True:
          # 4. 等電話的鏈接
          conn, addr = server.accept()
          # 5. 收發消息
          data = conn.recv(1024)
          print(data)
          """新增這一行代碼  遵守HTTP協議"""
          conn.send(b'HTTP1.1 200 OK\r\n\r\n')
          conn.send(b'<strong>good</strong>')
          # 6.掛電話
          conn.close()
      # 7.關機
      server.close()
      

      利用十幾行代碼,實現了最基本的需求,在瀏覽器中輸入一個網址,就可以看到內容

      根據URL的不同,返回的內容也是不一樣

      怎么取實現這個需求 如何獲取到url

      import socket
      
      # 1.買手機
      server = socket.socket()
      # 2.綁定手機號
      server.bind(('127.0.0.1', 8000))
      # 3.開機
      server.listen()
      while True:
          # 4. 等電話的鏈接
          conn, addr = server.accept()
          # 5. 收發消息
          data = conn.recv(1024)
          # decode將二進制數據轉成字符串  再按照\r\n進行切割
          data = data.decode().split('\r\n')
          print(data, type(data))
          # 拿到了瀏覽器的url
          url = data[0].split(' ')[1]
          print(url)
          """新增這一行代碼  遵守HTTP協議"""
          conn.send(b'HTTP1.1 200 OK\r\n\r\n')
          if url == '/nice':
              conn.send(b'<h1>nice</h1>')
          elif url == '/nb':
              conn.send(b'nb')
          else:
              conn.send(b'404')
          # 6.掛電話
          conn.close()
      # 7.關機
      server.close()
      

      基本功能實現了,但url一多,這么寫就不行了,考慮優化代碼

      import socket
      
      def nb():
          return b'nb'
      
      def nice():
          return b'<h1>nice</h1>'
      
      def not_found():  # 形參
          return b'<h1>404</h1>'
      
      li_content = [
          ('/nb', nb),
          ('/nice', nice)
      ]
      
      # 1.買手機
      server = socket.socket()
      # 2.綁定手機號
      server.bind(('127.0.0.1', 8000))
      # 3.開機
      server.listen()
      while True:
          # 4. 等電話的鏈接
          conn, addr = server.accept()
          # 5. 收發消息
          data = conn.recv(1024)
          # decode將二進制數據轉成字符串  再按照\r\n進行切割
          data = data.decode().split('\r\n')
          print(data, type(data))
          # 拿到了瀏覽器的url
          url = data[0].split(' ')[1]
          print(url)
          """新增這一行代碼  遵守HTTP協議"""
          conn.send(b'HTTP1.1 200 OK\r\n\r\n')
          for content in li_content:
              if url == content[0]:
                  conn.send(content[1]())
                  break
          else:
              conn.send(not_found())
          # 6.掛電話
          conn.close()
      # 7.關機
      server.close()
      
      posted @ 2023-04-19 10:29  LePenseur  閱讀(40)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 无码h片在线观看网站| 久久精品国产亚洲av品| 四虎影视一区二区精品| 国产精品国产三级国产试看| 无套内谢少妇毛片aaaa片免费| 波多结野衣一区二区三区| 国产绿帽在线视频看| 亚洲熟妇自偷自拍另欧美 | 日韩有码中文在线观看| 人妻少妇偷人精品一区| 久久亚洲av成人无码软件| 永久免费无码av在线网站| 97亚洲熟妇自偷自拍另类图片| 天天做日日做天天添天天欢公交车| 亚洲色大成网站www永久一区| 国产日女人视频在线观看| 日韩精品一区二区亚洲专区| 亚洲精中文字幕二区三区| 亚洲国产精品综合久久2007 | 性饥渴少妇AV无码毛片| 临颍县| 久久精品夜色噜噜亚洲aa| av小次郎网站| 久激情内射婷内射蜜桃| 国产玖玖玖玖精品电影| 福利网午夜视频一区二区| 国产蜜臀在线一区二区三区| 四虎成人精品无码| 视频一区二区三区四区五区| 亚洲熟妇自偷自拍另欧美| 国偷自产一区二区三区在线视频 | 亚洲第一无码专区天堂| 丰满少妇在线观看网站| 激情四射激情五月综合网| 日日噜噜夜夜狠狠视频| 精品中文人妻在线不卡| 国产亚洲精品久久久久秋霞| 国产成人精彩在线视频50| 国产精品高清中文字幕| A级毛片100部免费看| 成人免费视频在线观看播放|