Python flask会话变量不存在';请求后不要改变
我想在访问url('/CAPTCHA')时更新变量('CAPTCHA_NUM'),并在模板中获取此变量: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
@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)