溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

一、1 基于socket手寫web框架

發(fā)布時間:2020-07-11 11:53:30 來源:網(wǎng)絡(luò) 閱讀:566 作者:a120518129 欄目:編程語言
1 web 應(yīng)用
2 c/s 和bs架構(gòu)
3 python中的web框架
    a :socket
    b:路由跟視圖函數(shù)匹配關(guān)系
    c:模板渲染

    django: a: 用了別人的wsgiref   b:自己寫的   c:自己寫的
    flask: a:用了別人的            b:自己寫的   c:用了別人的:jinja2
    tornado: a 自己寫的            b:自己寫的   c:自己寫的

4 http協(xié)議:
    -特點:1 基于TCP/IP協(xié)議之上的應(yīng)用層協(xié)議
          2 基于請求-響應(yīng)模式
          3 無狀態(tài)保存
          4 短連接
    -請求格式:
    -響應(yīng)格式:
5 django的安裝和簡單使用
    -安裝:1 pip3 install django==1.11.9
          2 pycharm 下安裝,選擇版本號
    -使用:
         命令創(chuàng)建項目:django-admin startproject 項目名字
         創(chuàng)建app:python3 manage.py startapp app01
    -文件目錄介紹:
        -manage.py---項目入口,執(zhí)行一些命令
        -項目名
            -settings:全局配置信息
            -urls:總路由,請求地址跟視圖函數(shù)的映射關(guān)系
        -app名字
            -migrations:數(shù)據(jù)庫遷移的記錄
            -models.py  數(shù)據(jù)庫表模型
            -views  視圖函數(shù)

    -運行項目:
        pytyon3 manage.py runserver 127.0.0.1:8001


6 補充:
    1 decode和encode
        data = b'111111'
        data = str(data, encoding='utf-8')
        print(type(data))
        data = bytes(data, encoding='utf-8')
        print(type(data))
    2 pymysql鏈接數(shù)據(jù)庫
        #拿到數(shù)據(jù)庫鏈接
        conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', db='db2', password='mariadb.123')
        #獲得游標(biāo),并且查詢結(jié)果數(shù)據(jù)是字典格式
        cur=conn.cursor(pymysql.cursors.DictCursor)
        #執(zhí)行sql
        cur.execute('select * from user')
        #獲取全部查詢結(jié)果
        dic=cur.fetchall()
    3 以后寫項目:
        1 不要用中文
        2 計算機名不能用中文
        3 一個工程,就是一個項目

7 作業(yè):
    1 上課講的內(nèi)容整理到博客上
    2 django下載下來,跑起來
    3 單表的圖書管理系統(tǒng)
      圖書的增刪改查
        一個book表
          id  name   price  author  publish

      所有人都必須完成:查

認(rèn)識web框架:

my_django.py

import socket
server=socket.socket()
server.bind(('127.0.0.1',8001))
server.listen(5)
while True:
    conn,client_address=server.accept()
    data=conn.recv(1024)
    # 等客戶端連接進來以后,回給客戶端消息
    conn.send(b'HTTP/1.1 200 OK\r\nContent-Type:text/html\r\n\r\n')
    print(data)
    # conn.close()
    # 把上面的二進制格式轉(zhuǎn)換成下面的字符串類型,不需要再記住 是用encode 還是用decode
    data = str(data,encoding='utf-8')
    # 如何把字符串類型轉(zhuǎn)換成二進制類型
    # b1=bytes(data,encoding='utf-8')
    position=data.split('\r\n')[0].split(' ')[1]

    if '/index' == position:
        with open('index.html','rb') as f:
            da=f.read()
        conn.send(da)
    else:
        conn.send(b'404')
    conn.close()

請求與響應(yīng)格式

'''

Request Headers

# 請求首行

# GET / HTTP/1.1\r\n

# # 請求頭

# Host: 127.0.0.1:8001\r\n

# Connection: keep-alive\r\n

# Cache-Control: max-age=0\r\n

# Upgrade-Insecure-Requests: 1\r\n

# User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 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\nAccept-Language: zh-CN,zh;q=0.9\r\n\r\n'

# # 請求體

Response

'''


index.html(同級目錄下即可)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h2>h2</h2>
<h3>h3</h3>
<img src="http://img4.imgtn.bdimg.com/it/u=1565006133,780611353&fm=26&gp=0.jpg">
</body>
</html>



向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI