Python flask会话变量不存在';请求后不要改变

Python flask会话变量不存在';请求后不要改变,python,session,flask,Python,Session,Flask,我想在访问url('/CAPTCHA')时更新变量('CAPTCHA_NUM'),并在模板中获取此变量: @app.route('/captcha') def captcha(): from captcha.image import ImageCaptcha from random import random image = ImageCaptcha() x = int(round(random() * 10000)) if x < 1000: x

我想在访问url('/CAPTCHA')时更新变量('CAPTCHA_NUM'),并在模板中获取此变量:

@app.route('/captcha')
def captcha():
    from captcha.image import ImageCaptcha
    from random import random
    image = ImageCaptcha()
    x = int(round(random() * 10000))
    if x < 1000: x += 1000
    session['CAPTCHA_NUM'] = x
    return image.generate(str(session['CAPTCHA_NUM']), 'png').getvalue()
我在
validate\u capcha()
中得到
会话['CAPTCHA\u NUM']


===================解决方案========================

政府的官方文件中说:

如果在没有活动请求上下文的情况下呈现模板,则此变量不可用。

我只是更改了
img
标记的
src
属性,显然这不是一个活动的请求上下文


最后,我将验证码验证部分放在服务器端,这样我就可以避免这个问题。

如果使用visit
http://***.com/captcha
它将不会刷新。 你需要给它一个参数,这样它就会刷新

起初你写

url_for('.captcha')
换成

url_for('.captcha',t=some_random_value)
然后它会刷新
因为它会生成如下url:
http://***.com/captcha?t=some_random_值

,应该可以正常工作,请尝试使用调试模式并检查控制台中的错误消息?@KevinGuan I print session['captcha_NUM'],结果正确。但是在我的register.html页面中,这个变量直到我重新访问url时才改变,而url应该更新为一个新的:(所以这里没有错误,但是会话没有改变?
captcha()中的@KevinGuan)
功能,会话更改。但是在
register.html
中,它没有更改。@KevinGuan我想在服务器端检查它是唯一的选择。
url_for('.captcha')
url_for('.captcha',t=some_random_value)