Django【二】自定义web框架

自定义web框架

1、准备登录的html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="icon" href="favicon.ico">
</head>
<body>
<!--提交的位置 点击提交按钮相当于请求了这个网址-->
<form action="http://127.0.0.1:9000/auth" method="get">
    <input type="text" name="username" placeholder="username">
    <input type="password" name="password" placeholder="password">
    <button>提交</button>
</form>
</body>
</html>

登录页面

登录页面

2、将HTML页面发送到服务端

# -*- coding: utf-8 -*-
# @Time    : 2019/5/16 19:16
import webauth
from wsgiref.simple_server import make_server
from urllib.parse import parse_qs
def auth(environ):
    # 判断提交按钮的请求是什么请求
    if environ.get("REQUEST_METHOD")=="GET":
        # 获取用户输入的信息  username=xiaohei&password=123
        request_data = environ[‘QUERY_STRING‘]
        # 对信息进行解析   {‘username‘: [‘xiaohei‘], ‘password‘: [‘123‘]}
        re_data = parse_qs(request_data)
        # 分别取出用户名和密码
        username = re_data[‘username‘][0]
        password = re_data[‘password‘][0]
        # 提交给服务器进行验证
        ret = webauth.auth(username,password)
        # 服务器返回验证信息
        if ret:
            with open("websuccess.html", "rb") as f:
                content = f.read()
            return [content]
        else:
            # 验证失败
            return [b"login failure"]

def login(environ):
    with open("login.html","rb") as f:
        content = f.read()
    return [content]
def log(environ):
    with open("favicon.ico","rb") as f:
        content = f.read()
    return [content]
li = [
    ("/login",login),
    ("/favicon.ico",log),
    ("/auth",auth),

]
def app(environ, start_response):
    # 封装响应信息
    start_response(‘200 OK‘, [(‘Content-Type‘, ‘text/html‘), (‘k1‘, ‘v1‘)])
    # environ 封装好的请求数据,字典的格式
    path = environ["PATH_INFO"]
    for i in li:
        # 判断用户输入的url
        if i[0] == path:
            # 调用url对应的函数
            ret = i[1](environ)
            return ret
            break
    else:
        # 用户输入的网址不合法
        return [b"404 not found"]

# 绑定ip和端口,有人连接就调用app函数
httpp = make_server("127.0.0.1",9000,app)
# 开始监听http请求
httpp.serve_forever()

服务端页面

服务端页面

3、数据库验证登录信息

# -*- coding: utf-8 -*-
# @Time    : 2019/5/16 19:42
import pymysql
# 数据库信息验证,验证用户名和密码
def auth(username,password):
    db = pymysql.connect(
        host="127.0.0.1",
        port=3306,
        user="root",
        password="root",
        database="day53",
        charset="utf8"   # 不能写-
    )
    cursor = db.cursor(pymysql.cursors.DictCursor)
    sql = "select * from info where username=%s and password=%s;"
    res = cursor.execute(sql,[username,password])
    print(res)
    if res:
        return True
    else:
        return False

验证登录

验证登录

4、返回登录成功页面

原文地址:https://www.cnblogs.com/youxiu123/p/11600216.html

时间: 2024-08-29 21:18:04

Django【二】自定义web框架的相关文章

自定义web框架(django)

Django基础了解知识 HTTP协议(超文本传输协议) HTTP协议 四大特性: 基于TCP/IP之上作用于应用层 基于请求响应 无状态 引申出cookie session token-- 无连接 长连接 websocket (HTTP协议的大补丁) 数据格式: 请求格式 请求首行(请求方式,协议版本等等) 请求头(一大堆K:V键值对) \r\n 或者是\n 总之就是加一个空行 请求体(真正的数据 发post请求的时候才有 如果是get请求不会有) 响应格式 响应首行 响应头 \r\n 或者是

Python自定义web框架、Jinja2

WSGI(Web Server Gateway Interface)是一种规范,它定义了使用python编写的web app与web server之间接口格式,实现web app与web server间的解耦. python标准库提供的独立WSGI服务器称为wsgiref. 标准Web框架 #!/usr/bin/env python #coding:utf-8 from wsgiref.simple_server import make_server def RunServer(environ,

自定义Web框架

Web框架本质 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #!/usr/bin/env python #coding:utf-8   import socket   def handle_request(client):     buf = client.recv(1024)     client.send

python -- 自定义web框架

在学习自定义web框架之前我们对什么是web框架需要有个清晰的认识,本质上说,web框架就是一个socket Server. 目前常见的动态网站WEB框架前面有WSGI(eg:Django.Flask...)或者是自己写的SOCKET(Tornado),然后交给URL路由系统处理,然后交给某个函数或某个类,然后在模板(常用jinja2)里拿到模板然后把模板和从数据库取出的数据进行混合组成一个字符串然后返回给用户(python3在发送时要byte编码). 这里对WSGI举例说明一下: WSGI是用

Django(一)自定义web框架

https://www.cnblogs.com/yuanchenqi/articles/6083427.htm 一 什么是web框架 框架,即framework, 特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的舞台来做表演. 对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. import socket def handle_request(client): buf

python web框架【补充】自定义web框架

http协议 HTTP简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议. HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等). HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是H

Web 框架本质解析

一  Web框架本质 1. 自己开发Web框架 - socket - http协议 - HTML知识 - 数据库(pymysql,SQLAlchemy) HTTP: 无状态.短连接 TCP: 不断开 WEB应用(网站): Http协议: 发送: POST /index HTTP/1.1 Host: 127.0.0.1:8080 Connection: keep-alive Cache-Control: max-age=0 Accept: text/html,application/xhtml+x

Python自动化运维之26、Django系列-Web框架本质

一.Web框架本质 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. #!/usr/bin/env python #coding:utf-8 import socket def handle_request(client): buf = client.recv(1024) client.send("HTTP/1.1 200 OK\r\n\r\n") client.send("Hello, Seven"

Django基础一之web框架的本质

Django基础一之web框架的本质 一 web框架的本质及自定义web框架 ? 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端,基于请求做出响应,客户都先请求,服务端做出对应的响应,按照http协议的请求协议发送请求,服务端按照http协议的响应协议来响应请求,这样的网络通信,我们就可以自己实现Web框架了. 通过对socket的学习,我们知道网络通信,我们完全可以自己写了,因为socket就是做网络通信用的,下面我们就基于sock