1、1 基於socket手寫web框架

1 web 應用
2 c/s 和bs架構
3 python中的web框架
    a :socket
    b:路由跟視圖函數匹配關係
    c:模板渲染

    django: a: 用了別人的wsgiref   b:本身寫的   c:本身寫的
    flask: a:用了別人的            b:本身寫的   c:用了別人的:jinja2
    tornado: a 本身寫的            b:本身寫的   c:本身寫的

4 http協議:
    -特色:1 基於TCP/IP協議之上的應用層協議
          2 基於請求-響應模式
          3 無狀態保存
          4 短鏈接
    -請求格式:
    -響應格式:
5 django的安裝和簡單使用
    -安裝:1 pip3 install django==1.11.9
          2 pycharm 下安裝,選擇版本號
    -使用:
         命令建立項目:django-admin startproject 項目名字
         建立app:python3 manage.py startapp app01
    -文件目錄介紹:
        -manage.py---項目入口,執行一些命令
        -項目名
            -settings:全局配置信息
            -urls:總路由,請求地址跟視圖函數的映射關係
        -app名字
            -migrations:數據庫遷移的記錄
            -models.py  數據庫表模型
            -views  視圖函數

    -運行項目:
        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連接數據庫
        #拿到數據庫連接
        conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', db='db2', password='mariadb.123')
        #得到遊標,而且查詢結果數據是字典格式
        cur=conn.cursor(pymysql.cursors.DictCursor)
        #執行sql
        cur.execute('select * from user')
        #獲取所有查詢結果
        dic=cur.fetchall()
    3 之後寫項目:
        1 不要用中文
        2 計算機名不能用中文
        3 一個工程,就是一個項目

7 做業:
    1 上課講的內容整理到博客上
    2 django下載下來,跑起來
    3 單表的圖書管理系統
      圖書的增刪改查
        一個book表
          id  name   price  author  publish

      全部人都必須完成:查

認識web框架:html

my_django.pypython

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()
    # 把上面的二進制格式轉換成下面的字符串類型,不須要再記住 是用encode 仍是用decode
    data = str(data,encoding='utf-8')
    # 如何把字符串類型轉換成二進制類型
    # 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()

請求與響應格式mysql

'''web

Request Headerssql

# 請求首行數據庫

# GET / HTTP/1.1\r\ndjango

# # 請求頭flask

# Host: 127.0.0.1:8001\r\n架構

# Connection: keep-alive\r\napp

# 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>
<h1>h1</h1>
<h2>h2</h2>
<img src="http://img4.imgtn.bdimg.com/it/u=1565006133,780611353&fm=26&gp=0.jpg">
</body>
</html>
相關文章
相關標籤/搜索