Python实现手写一个类似django的web框架示例
作者:铠甲巨人 发布时间:2022-06-18 03:17:26
标签:Python,django,web框架
本文实例讲述了Python实现手写一个类似django的web框架。分享给大家供大家参考,具体如下:
用与django相似结构写一个web框架。
启动文件代码:
from wsgiref.simple_server import make_server #导入模块
from views import *
import urls
def routers(): #这个函数是个元组
URLpattern=urls.URLpattern
return URLpattern #这个函数执行后返回这个元组
def application(environ,start_response):
print("ok1")
path=environ.get("PATH_INFO")
print("path",path)
start_response('200 OK',[('Content-Type','text/html')])
urlpattern=routers() #讲函数的返回值元组赋值
func=None
for item in urlpattern: #遍历这个元组
if path==item[0]: #item[0]就是#路径后面的斜杠内容
func=item[1] #item[1]就是对应的函数名
break
if func: #如果路径内容存在函数就存在
return func(environ) #执行这个函数
else:
print("ok5")
return [b"404"] #如果不存在就返回404
if __name__=='__main__':
print("ok0")
t=make_server("",9700,application)
print("ok22")
t.serve_forever()
urls.py文件代码:
from views import *
URLpattern = (
("/login", login),
("/alex", foo1),
("/egon", foo2),
("/auth", auth)
)
views.py文件代码:
def foo1(request): # 定义函数
f=open("templates/alex.html","rb") #打开html 以二进制的模式
data=f.read() #读到data里
f.close() #关闭
return [data] #返回这个data
def foo2(request):
f=open("templates/egon.html","rb")
data=f.read()
f.close()
return [data]
def login(request):
f=open("templates/login.html","rb")
data=f.read()
f.close()
return [data]
def auth(request):
print("+++",request)
user_union,pwd_union=request.get("QUERY_STRING").split("&")
_,user=user_union.split("=")
_,pwd=pwd_union.split("=")
if user=='Yuan' and pwd=="123":
return [b"login,welcome"]
else:
return [b"user or pwd is wriong"]
templates目录下的html文件:
alex.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="x-ua-compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Title</title>
</head>
<body>
<div>alex</div>
</body>
</html>
login.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h2>登录页面</h2>
<form action="http://127.0.0.1:9700/auth">
<p>姓名:<input type="text" name="user"></p>
<p>密码:<input type="password" name="pwd"></p>
<p>
<input type="submit">
</p>
</form>
</body>
</html>
下面如图,是目录结构
访问ip+prot+路径 即为相应的html,功能简单,只是为了熟悉django
希望本文所述对大家Python程序设计有所帮助。
来源:https://www.cnblogs.com/ArmoredTitan/p/7412573.html


猜你喜欢
- 在ASP中Request对象是获取客户端提交数据的一个很重要的对象,大家对他也是非常熟悉了。 虽然如此,还是经常有人问我下面的几种写法有什么
- 一段这样的JavaScript代码,猜猜结果如何?var i = 0, m =
- 一、安装github:https://github.com/kubernetes-client/python安装pip install ku
- asp之家注:那么为什么要使用分页呢?当记录不多的时候,如10个或20个,我们可以也没必要使用分页来显示数据,但是数据是在不断增加的,当到了
- 所需库的安装很多人问Pytorch要怎么可视化,于是决定搞一篇。tensorboardX==2.0tensorflow==1.13.2由于t
- 本文实例为大家分享了python实现打砖块小游戏的具体代码,供大家参考,具体内容如下开发益智的打砖块小游戏,你可以试一下能打几块import
- 一、文本文件文本文件,主要包括csv和txt两种等,相应接口为read_csv()和to_csv(),分别用于读写数据1. read_csv
- Django的View一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应。响应可以是一张
- AJAX初体验之上手篇AJAX是这两年蛮热的东西,我也凑凑热闹,前些天去找了些教程学学,下面就按整个处理过程把自己学的东西写写,不过,因为是
- 这是个郁闷的问题。主级获得ID列表 select ID from FS_SD_Address where PID=0
- 本文实例讲述了Python实现的读取/更改/写入xml文件操作。分享给大家供大家参考,具体如下:原始文档内容(test.xml):<?
- 1, 创建pytorch 的Tensor张量:torch.rand((3,224,224)) #创建随机值的三维张量,大小为(3,224,2
- 本文实例讲述了Python多线程threading模块用法。分享给大家供大家参考,具体如下:多线程 - threadingpython的th
- 1、处理包含数据的文件最近利用Python读取txt文件时遇到了一个小问题,就是在计算两个np.narray()类型的数组时,出现了以下错误
- keras训练fit( self, x, y, batch_size=32, nb_epoch=10, verbose=1, c
- 在团队意见PK中,运用对方的知识背景说服对方,这就是技术性击倒。这样通常能把对方驳得哑口无言,我经常被这样击倒,甚至觉得怎么那么多牛逼的设计
- 本文实例为大家分享了python sklearn分类算法模型调用的具体代码,供大家参考,具体内容如下实现对'NB',&nbs
- 可以压缩文件和目录。package mainimport ( "archive/zip" &qu
- python对XML文件的操作1、xml 创建import xml.etree.ElementTree as ETnew_xml=ET.El
- 1.彻底弄懂CSS盒子模式一(DIV布局快速入门)3.彻底弄懂CSS盒子模式三(浮动的表演和清除的自述) 4.彻底弄懂CSS盒子模式四(绝对