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

flask 特色:上下文机制,在 django 中有吗?或者说 django 有类似的处理方式吗?

  •  
  •   miniyao · 2018-01-09 09:13:14 +08:00 via iPhone · 3244 次点击
    这是一个创建于 2291 天前的主题,其中的信息可能已经有所发展或是发生改变。
    flask 的特色:上下文( application context 和 request context ),django 有类似的实现方式吗? 还是 django 根本用不到这个所谓的上下文方式?
    10 条回复    2018-01-09 13:49:44 +08:00
    xiadd
        1
    xiadd  
       2018-01-09 09:20:29 +08:00
    都不懂... 不过或许你说的是中间件?
    JerryZhang
        2
    JerryZhang  
       2018-01-09 09:22:04 +08:00
    没用过 flask,context 实现了什么功能?
    heww
        3
    heww  
       2018-01-09 09:27:36 +08:00
    我司以前用过 django 的 global request。
    ml071987
        4
    ml071987  
       2018-01-09 09:28:04 +08:00
    with...as... 自动也可以实现上下文
    qs
        5
    qs  
       2018-01-09 09:46:55 +08:00
    应该是指 flask 里 request 对象的实现吧 不像 django 需要在视图函数里指定一个 request 的参数, 直接就能在函数体里使用 request 对象
    miniyao
        6
    miniyao  
    OP
       2018-01-09 09:53:47 +08:00 via iPhone
    @JerryZhang 应用上下文和请求上下文

    @heww g 在 flask 里单独有

    @qs request 是请求上下文。flask 还有一个应用上下文,一般配合消息队列,或 redis 使用的
    yylucifer
        7
    yylucifer  
       2018-01-09 10:11:32 +08:00
    玩了好几个框架,应该是没有的。

    Flask 这个上下文是通过 ThreadLocal 实现的

    Django 应该目前应该是没有流行得类似机制的

    其实这也没啥,就是 ThreadId ( routineId )— argument 的绑定

    自己想的话用 Storage Platform 也可以实现出来
    neoblackcap
        8
    neoblackcap  
       2018-01-09 11:03:25 +08:00
    @qs 所以 request 也不用导入吗?我是 from flask import request 之后才能用啊,我还以为是一个类似 proxy 一样的东西。试过直接在视图函数里面用 request 会报错,是用法不对?
    Hstar
        9
    Hstar  
       2018-01-09 11:54:14 +08:00
    request 就是每个 view 的那个参数,current_app 应该没有,但我用 flask 也完全没用过这东西。

    什么情况下使用消息队列和 redis 需要 current_app ?
    Mark24
        10
    Mark24  
       2018-01-09 13:49:44 +08:00
    request,g 那个是 Flask 的特别之处

    高效简洁优雅

    用了一个栈的数据结构,巧妙的简化了问题。

    Django 是每个 view 处理参数,接收一个 request,会存在大量的样板代码。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3193 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 14:00 · PVG 22:00 · LAX 07:00 · JFK 10:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.