
学习 wsgi,突然萌生想法,web 框架不就是根究 url 匹配,然后调用相应的函数嘛。。。于是乎,学习一下 werkzeug,然后上手开始怼一个 web 框架。很简单,大部分其实都是调用 werkzeug 的东西。弄这个玩意主要是为了调侃,再加上巩固一下 wsgi 的知识。下一步准备学习学习 flask 框架的代码。顺便问一嘴,现在外面的 python 安全开发都需要什么技能?本人主要做信息安全这块,能日站,能撸代码。求大佬指点
#!/usr/bin/env python # -*- coding: UTF-8 -*- from werkzeug.routing import Map, Rule from werkzeug.serving import run_simple from werkzeug.wrappers import Response, Request class tiny: def __init__(self): self.url_map: Map = Map([]) self.views = {} def wsgi(self, environ, start_response): request = Request(environ) urls = self.url_map.bind_to_environ(environ) rv = urls.dispatch(lambda e, v: self.views[e](request, **v)) return Response(rv, mimetype='text/plain')(environ, start_response) def route(self, endpoint): def inner(func): self.url_map.add(Rule(endpoint, endpoint=func.__name__)) self.views = {func.__name__: func} return func return inner def run(self, host='localhost', port=5000, **options): return run_simple(host, port, self.wsgi, **options) a = tiny() @a.route("/1") def index(request): return 'Hello "%s"!' % request.args['a'] a.run() 1 topbandit 2018 年 8 月 14 日 搞黑产去 |
3 shierji 2018 年 8 月 14 日 via Android werkzeug 那么大一坨你视而不见不? |
4 windfarer 2018 年 8 月 14 日 很粗暴 |
7 zn 2018 年 8 月 14 日 |
8 firebroo 2018 年 8 月 14 日 搞黑产去 |
11 est 2018 年 8 月 14 日 werkzeug 基本就算个框架了。 |
12 XaviAlonso 2018 年 8 月 14 日 @uwh0am1 BC 是啥? |
14 FiveDDD 2018 年 8 月 14 日 @XaviAlonso #12 应该是菠菜 |
15 misaka19000 2018 年 8 月 14 日 为了调侃什么? |
16 orangeade 2018 年 8 月 14 日 你可以再基于 aiohttp 写一个框架 |
17 SingeeKing PRO 这个数代码行数的方式我还真是头一次见…… |
18 shyling 2018 年 8 月 14 日 直接用 werkzeug 有点.... 安利下学校时挖的坑 https://github.com/impasse/Toys/blob/master/Python/a-flask.py |
19 scukmh 2018 年 8 月 14 日 胆小搞什么安全,就是要胆大心细。 |
20 xiaket 2018 年 8 月 15 日 的确欠揍... |