欠揍的 Python web 框架。。。。40 几行

2018-08-14 16:30:18 +08:00
 uwh0am1

学习 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()

4612 次点击
所在节点    Python
21 条回复
topbandit
2018-08-14 16:34:25 +08:00
搞黑产去
uwh0am1
2018-08-14 16:37:44 +08:00
@topbandit 不行啊老哥,我胆小。。。。
shierji
2018-08-14 16:39:33 +08:00
werkzeug 那么大一坨你视而不见不?
windfarer
2018-08-14 16:39:39 +08:00
很粗暴
uwh0am1
2018-08-14 16:41:22 +08:00
@shierji 😂哈哈哈,怪我怪我
uwh0am1
2018-08-14 16:41:31 +08:00
@windfarer 大力出奇迹
zn
2018-08-14 16:44:05 +08:00
如果包含在库里的代码不算行数的话,我的框架更简单粗暴:

import my.fxxking.simple.framework.server

server.run()
firebroo
2018-08-14 16:47:41 +08:00
搞黑产去
laoyur
2018-08-14 16:50:01 +08:00
@topbandit
@firebroo
这是什么梗?
uwh0am1
2018-08-14 16:52:20 +08:00
@laoyur 做 BC,炒鸡赚钱,月入好几万。不过老哥们能别说黑产吗,能来点正经路子吗
est
2018-08-14 16:52:56 +08:00
werkzeug 基本就算个框架了。
XaviAlonso
2018-08-14 17:11:15 +08:00
@uwh0am1 BC 是啥?
apoclast
2018-08-14 17:13:27 +08:00
这只是用了框架吧
FiveDDD
2018-08-14 17:14:24 +08:00
@XaviAlonso #12 应该是菠菜
misaka19000
2018-08-14 17:14:34 +08:00
为了调侃什么?
orangeade
2018-08-14 17:15:53 +08:00
你可以再基于 aiohttp 写一个框架
SingeeKing
2018-08-14 17:18:52 +08:00
这个数代码行数的方式我还真是头一次见……
shyling
2018-08-14 20:31:32 +08:00
直接用 werkzeug 有点.... 安利下学校时挖的坑 https://github.com/impasse/Toys/blob/master/Python/a-flask.py
scukmh
2018-08-14 23:18:29 +08:00
胆小搞什么安全,就是要胆大心细。
xiaket
2018-08-15 07:12:36 +08:00
的确欠揍...

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/479719

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX