V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
uwh0am1
V2EX  ›  Python

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

  •  1
     
  •   uwh0am1 · 2018-08-14 16:30:18 +08:00 · 4588 次点击
    这是一个创建于 2296 天前的主题,其中的信息可能已经有所发展或是发生改变。

    学习 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()
    
    
    21 条回复    2018-08-20 09:18:27 +08:00
    topbandit
        1
    topbandit  
       2018-08-14 16:34:25 +08:00
    搞黑产去
    uwh0am1
        2
    uwh0am1  
    OP
       2018-08-14 16:37:44 +08:00
    @topbandit 不行啊老哥,我胆小。。。。
    shierji
        3
    shierji  
       2018-08-14 16:39:33 +08:00 via Android
    werkzeug 那么大一坨你视而不见不?
    windfarer
        4
    windfarer  
       2018-08-14 16:39:39 +08:00
    很粗暴
    uwh0am1
        5
    uwh0am1  
    OP
       2018-08-14 16:41:22 +08:00
    @shierji 😂哈哈哈,怪我怪我
    uwh0am1
        6
    uwh0am1  
    OP
       2018-08-14 16:41:31 +08:00
    @windfarer 大力出奇迹
    zn
        7
    zn  
       2018-08-14 16:44:05 +08:00
    如果包含在库里的代码不算行数的话,我的框架更简单粗暴:

    import my.fxxking.simple.framework.server

    server.run()
    firebroo
        8
    firebroo  
       2018-08-14 16:47:41 +08:00
    搞黑产去
    laoyur
        9
    laoyur  
       2018-08-14 16:50:01 +08:00
    @topbandit
    @firebroo
    这是什么梗?
    uwh0am1
        10
    uwh0am1  
    OP
       2018-08-14 16:52:20 +08:00
    @laoyur 做 BC,炒鸡赚钱,月入好几万。不过老哥们能别说黑产吗,能来点正经路子吗
    est
        11
    est  
       2018-08-14 16:52:56 +08:00
    werkzeug 基本就算个框架了。
    XaviAlonso
        12
    XaviAlonso  
       2018-08-14 17:11:15 +08:00
    @uwh0am1 BC 是啥?
    FiveDDD
        14
    FiveDDD  
       2018-08-14 17:14:24 +08:00
    @XaviAlonso #12 应该是菠菜
    misaka19000
        15
    misaka19000  
       2018-08-14 17:14:34 +08:00
    为了调侃什么?
    orangeade
        16
    orangeade  
       2018-08-14 17:15:53 +08:00
    你可以再基于 aiohttp 写一个框架
    SingeeKing
        17
    SingeeKing  
       2018-08-14 17:18:52 +08:00
    这个数代码行数的方式我还真是头一次见……
    shyling
        18
    shyling  
       2018-08-14 20:31:32 +08:00
    直接用 werkzeug 有点.... 安利下学校时挖的坑 https://github.com/impasse/Toys/blob/master/Python/a-flask.py
    scukmh
        19
    scukmh  
       2018-08-14 23:18:29 +08:00
    胆小搞什么安全,就是要胆大心细。
    xiaket
        20
    xiaket  
       2018-08-15 07:12:36 +08:00
    的确欠揍...
    kevin1234
        21
    kevin1234  
       2018-08-20 09:18:27 +08:00
    @uwh0am1 BC 是啥?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5229 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 01:15 · PVG 09:15 · LAX 17:15 · JFK 20:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.