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
334862132
V2EX  ›  Python

web.py 有没有装饰器让类只能访问 post 接口

  •  
  •   334862132 · 2018-12-21 09:29:36 +08:00 · 1848 次点击
    这是一个创建于 1951 天前的主题,其中的信息可能已经有所发展或是发生改变。

    网上看见一段代码 web.py 类被路由导向,找了一下 web.py 还没有像 flask 和 django 那样的装饰器限制只能访问 post 接口或 get 接口 就像下面的函数 我如果要让类只能 post 接口被访问有什么方法么 还有 read_file 函数 因为类被路由导向会不会有被外部访问的危险?

    #!/usr/bin/python #--coding:utf8--

    import web import sys,os

    FILE={ "test":"./test.txt" }

    class fileRead(object): def GET(self,name): return self.read_file(name) def POST(self, name): return self.read_file(name) def read_file(self, name): file_data = "" web.header('Content-Type','text/json;charset=utf-8',unique=True) if name not in FILE: file_data="file name error" return file_data path = FILE(name) if not os.path.isfile(path): file_data= return file_data fp = open(path, 'r') file_data = fp.read() return file_data if name== 'main': urls = ( '/(.*)','fileRead' ) app = web.application(urls, globals()) app.run()

    5 条回复    2018-12-21 16:21:17 +08:00
    334862132
        1
    334862132  
    OP
       2018-12-21 09:30:27 +08:00
    复制效果不太好 直接给个地址吧....
    https://blog.csdn.net/PgZHJ/article/details/80447840
    fucker
        2
    fucker  
       2018-12-21 10:48:17 +08:00   ❤️ 1
    1.关于限制仅 POST 请求访问,你只需 def POST 就好了啊。以你给的这段代码,为例,不希望接受 GET 请求,那就直接删掉 def GET 相关的代码就可以了。
    2.关于装饰器,给你个参考吧 https://gist.github.com/oxtopus/5183141


    题外话,自从 Aaron Swartz 离开以后我也坚持了一段时间 web.py ,最近转到 Sanic,刚才一瞬间差点不认识楼主的代码了
    SeaRecluse
        3
    SeaRecluse  
       2018-12-21 11:54:44 +08:00   ❤️ 1
    LZ 正解,把 get 相关的屏蔽掉
    334862132
        4
    334862132  
    OP
       2018-12-21 14:34:05 +08:00
    @fucker 谢谢了 我发现我钻牛角尖了 不想让 read_file 函数被访问直接设置成私有方法就好了 不接收 GET 请求直接给 get 接口删了就好了
    fucker
        5
    fucker  
       2018-12-21 16:21:17 +08:00   ❤️ 1
    @334862132 #4 现在还在坚持 webpy 的人太少了,加油
    @Livid web[dot]py 被识别为外链了 [请不要在每一个回复中都包括外链,这看起来像是在 spamming] 手动狗头
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3229 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 13:18 · PVG 21:18 · LAX 06:18 · JFK 09:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.