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 ...
随机推荐
- linux下的终端利器 tmux 安装以及使用
ref :https://www.jianshu.com/p/fd3bbdba9dc9 Introduction 为什么使用tmux? 因为如果我们用terminal连接remote server.发 ...
- 使用jenkins 构建时,字体图标报错的问题。
最近一个项目开发中,我们在本地进行项目打包时,可以正常打包. 但是在使用jenkins构建时,一直报错,提示无法加载字体文件.can't resolve module '....xxxx.TTF ' ...
- postman中传参说明
1.form-data 表单传递,对应multipart/form-data, 2.x-www-form-urlencoded 默认传递,对应application/x-www-from-urlenc ...
- git diff 的简单使用(比较版本区别)
假如我们修改viewMail.vue 文件(部分代码) 从 //根据ID获取详情 getById () { let that = this; this.viewMailModal = true; th ...
- 搭建nginx环境
1.安装nginx 下载地址:http://nginx.org/en/download.html 博主选择的是nginx1.8.1,点击下载 下载完成后是一个压缩包, 解压后双击nginx.exe 这 ...
- QTP10破解步骤(亲试有效)
QTP10破解步骤: 1.安装qtp,一路默认下来(一定要默认安装目录),一直到要求输入License的界面 2.拷贝mgn-mqt82.exe到C:\Program Files\Mercury In ...
- redis cluster(集群)模式的创建方式
redis常用的架构有三种,单例.哨兵.集群,其他的都说过了,这里只简单介绍集群搭建. 单例最简单没什么好说的. 哨兵之前说过,该模式下有哨兵节点监视master和slave,若master宕机可自动 ...
- asp.net 页面静态化
页面静态化,有三种方式 伪静态 真静态,折中法 现在我做的是折中发 创建一个asp.net 页面, 连接跳转到还未生成的页面 创建HttpHandle类 using System;using ...
- python基础:数据类型一
一.可变不可变类型 二.数字类型 三.字符串类型 四.列表类型 一.可变不可变类型 #可变类型: 值变了,但是id没有变,证明没有生成新的值而是在改变原值,原值是可变类型 #不可变类型:值变了,id也 ...
- linux基础_使用指令2
1.cat指令 功能:查看文件内容,是以只读的方式打开. 语法:cat [] 要查看的文件 选项: -n:显示行号 末尾加 | more:分页 使用细节: cat只能浏览文件,而不能修改文件,为了浏览 ...