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、返回登录成功页面
Django-自定义web框架的更多相关文章
- web 框架的本质及自定义web框架 模板渲染jinja2 mvc 和 mtv框架 Django框架的下载安装 基于Django实现的一个简单示例
Django基础一之web框架的本质 本节目录 一 web框架的本质及自定义web框架 二 模板渲染JinJa2 三 MVC和MTV框架 四 Django的下载安装 五 基于Django实现的一个简单 ...
- 自定义web框架(django)
Django基础了解知识 HTTP协议(超文本传输协议) HTTP协议 四大特性: 基于TCP/IP之上作用于应用层 基于请求响应 无状态 引申出cookie session token-- 无连接 ...
- day48:django前戏之HTTP协议&自定义web框架
目录 1.HTTP协议 1.HTTP协议简介 2.HTTP协议概述 3.HTTP协议工作原理 4.HTTP协议请求方法 5.HTTP协议状态码 6.URL 7.HTTP请求格式 8.HTTP响应格式 ...
- Django: 之Web框架完美解析
Web框架解析 Web通过Socket来监听客户端,,一旦发现客户发送的信息立刻接受.接受之后在服务端查找客户的请求,找到请求返回给用户,断开.这是一个连接,不断的接收,不断的返回. #!/usr/b ...
- Web框架本质及第一个Django实例 Web框架
Web框架本质及第一个Django实例 Web框架本质 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端. 这样我们就可以自己实现Web ...
- Django之Web框架本质及第一个Django实例
Web框架本质 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端. 这样我们就可以自己实现Web框架了. 半成品自定义web框架 impor ...
- Python自定义web框架、Jinja2
WSGI(Web Server Gateway Interface)是一种规范,它定义了使用python编写的web app与web server之间接口格式,实现web app与web server ...
- django基础(web框架,http协议,django安装)
学习Django之前我们先来看什么是OSI七层模型: 应用层 表示层 应用层(五层模型中把这三层合成一个应用层) http协议 会话层 传输层 提供端口对 ...
- Django学习---Web框架及基础知识
Django学习---Web框架 web框架的本质 我们在学socket,我们创建一个socketserver,然后运行起来,有一个client客户端要连接socket服务端,连接上之后,如果两边都没 ...
- Django之web框架和url路由
一.web框架 1.什么是web框架 Web框架是用来进行Web应用开发的一个软件架构,开发者在基于Web框架实现自己的业务逻辑.Web应用本质上就是一个socket服务端,而用户的浏览器就是一个so ...
随机推荐
- 12-MySQL DBA笔记-MySQL复制
第12章 MySQL复制 本章将为读者讲述MySQL的复制技术,首先,介绍最基础的主从复制,它是其他所有复制技术的基础,接着再为读者讲述各种复制架构的搭建,最后,列举了一些常见的复制问题及处理方式.复 ...
- C# 语言基础学习路线图
一直以来,对于很多知识点都是存于收藏夹中,随着时间地变更,收藏夹中链接也起来越多,从未进行整理,也很零散,所以想对曾经遇到并使用过的一些知识形成文档,作为个人知识库的一部分. 就从C# 语言基础开始, ...
- Qt调用VS生成的dll
预备知识: 1.如果在没有导入库文件(.lib),而只有头文件(.h)与动态链接库(.dll)时,我们才需要显示调用,如果这三个文件都全的话,我们就可以使用简单方便的隐式调用. 2.通常Windo ...
- .net core默认不支持gb2312
采集数据时,乱码,之前遇到过这个情况,于是老办法: 果断使用Encoding.GetEncoding(“GB2312”),抛异常.搜了下,是因为.net core默认不支持gb2312 所以,两个办法 ...
- SQLServer从渣仔到小白
一.将查询结果插入到另一张表 1. 查询结果插入新表 select * into tableA from tableB where … 2. 查询结果插入已经存在的表 insert into tabl ...
- win10环境安装配置Nginx
前言: 参考 https://blog.csdn.net/kisscatforever/article/details/73129270 Nginx的应用场景 1. http服务器.Ngin ...
- flutter主题颜色
主题色 右下角的FloatingActionButton的颜色就是默认取值MaterialColor, 默认是蓝色的,如果修改成primarySwatch,就会变成这个颜色值. 一.primarySw ...
- Python的Struct模块
python strtuct模块主要在Python中的值于C语言结构之间的转换.可用于处理存储在文件或网络连接(或其它来源)中的二进制数据. #!/usr/bin/env python # -*- c ...
- ngnix反向代理后获取用户真实ip及https配置
server {listen 80;listen 802;server_name test111.xxxx.com 118.24.122.101; gzip on;gzip_min_length 10 ...
- 怎么解决Win7电脑更新出现80072EE2代码的错误?
我们在使用Win7系统时经常会遇到更新,这些更新可以修复一些系统漏洞,提高系统的安全性.但有时我们在进行相关更新时会出现错误,而导致最后的更新失败.下面好系统重装助手就和大家分享一下Win7系统更新出 ...