一、1 基于socket手写web框架
admin
2023-07-15 20:01:56
0
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框架:

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()
    # 把上面的二进制格式转换成下面的字符串类型,不需要再记住 是用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()

请求与响应格式

'''

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(同级目录下即可)




    
    Title


h2

h3



上一篇:Django使用笔记

下一篇:python 2 :包管理

相关内容

热门资讯

特朗普:正致力于与伊朗达成协议... 特朗普在《纽约邮报》一档播客访谈节目中称,他正与伊朗磋商一项协议,伊朗已同意不再谋求拥有核武器。他表...
不接壤的日菲为何偷划海界? 日菲近日发表联合声明,宣称就“划定两国专属经济区和大陆架的海洋边界”启动正式谈判。两个隔海相望的国家...
凤凰晚报丨从钳工到老戏骨,魏宗... 今日人物【从钳工到老戏骨,魏宗万用一生诠释“戏比天大”】6月1日,表演艺术家魏宗万在上海逝世,享年8...
科威特称伊朗袭击致63人受伤 科威特卫生部门3日称,伊朗当天对科威特的袭击已造成63人受伤,相关部门已启动紧急应对预案,并在全国范...
日本标榜“和平国家”却行扩军备... 今年是东京审判开庭80周年,世界正回望历史、反思战争罪责、捍卫二战后来之不易的国际秩序之际,日本却迈...
浙江杨梅即将大规模上市,如何破... “我们现在的压力很大。”5月底,浙江余姚杨梅产区丈亭镇副镇长林宇站在一片杨梅林前对第一财经表示,当地...
致5死2伤!韩国就韩华航空航天... 【环球网报道 记者 姜蔼玲】据韩联社6月1日报道,针对位于韩国大田的韩华航空航天公司发生爆炸致7人伤...
黄河科技学院2026年招生简章 长按图片识别二维码或点击 “阅读原文” 查看电子招生简章。
医路起航,从“心” 开始!黄河... 6月1日上午,黄河科技学院附属医院2022级临床医学本科实习生入院岗前培训在大医讲堂顺利举办。院领导...
问题居然在实体卡槽上!美版iP... 6月2日消息,日前,又有博主提前把还没发布的iPhone 18 Pro电池参数给曝光了出来,根据爆料...