我想在访问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()
但每次刷新页面(访问此网址)时,验证码都会更新,但session['CAPTCHA_NUM']
却没有。
例如,首先我获取验证码7530
,然后刷新register.html
(访问网址)并更新验证码,但session['CAPTCHA_NUM']
仍为7530
。
这是我访问网址(验证码)的地方:
register.html
<img id="vcode" src="{{url_for('captcha')}}" alt="captcha" />
我在session['CAPTCHA_NUM']
中获得了validate_capcha()
:
<input type="text" name="captcha" onblur="validate_captcha()" />
=================解========================
在flask session的官方文件中,它说:
This variable is unavailable if the template was rendered without an active request context.
我只是更改src
标记的img
属性,显然这不是有效的请求上下文。
最后我将验证码验证部分放在服务器端,以便我可以避免这个问题。
答案 0 :(得分:0)
如果您使用访问http://***.com/captcha
,则无法刷新。
你需要给它一个参数,所以它会刷新
首先你写
url_for('.captcha')
将其更改为
url_for('.captcha',t=some_random_value)
然后它会刷新
导致它生成这样的网址:http://***.com/captcha?t=some_random_value