【发布时间】:2014-01-19 03:57:36
【问题描述】:
我只是为我的登录表单编写了一个简单的验证码。
我只是添加一个简单的会话data.request.session['captcha']。
这是登录视图功能:
login (request):
if request.method =='GET':
form = LoginForm(auto_id=True)
a = random.randrange(1,10,1)
b = random.randrange(10,20.1)
request.session['captcha1']=a
request.session['captcha2']=b
return render_to_response('login.html',locals(),context_instance=RequestContext(request))
if request.method =='POST':
form = LoginForm(data=request.POST)
if form.is_valid():
captcha= request.POST.get('captcha','')
result = request.session.get('captcha1') + request.session.get('captcha2')
if captcha==result:
data = form.clean()
user=authenticate(username= data['username'],password = data['password'])
if user is not None:
auth_login(request,user)
return HttpResponseRedirect('/')
else:
form = LoginForm(auto_id=True)
return render_to_response('login.html',locals(),context_instance=RequestContext(request))
这是登录表单
class LoginForm (forms.Form):
username = forms.CharField(
label='username')
password =forms.CharField(
label='password',widget = forms.PasswordInput())
captcha = forms.CharField(label='spam chercker')
我得到验证码 1、验证码 2 的 keyerror,当我添加 print request.session['captcha1'] 时,它显示 None。这意味着,当 POST 时,我没有得到 django 会话数据,没有数据 captcha1 和 captcha2
如何将数据存储在 django 会话中,并将其传递给 POST 方法,以及其他视图函数?
谢谢
【问题讨论】:
-
这是什么:
request.session.get('captcha1)+request.session.get('captcha2)?单引号正确吗?同样,打印语句也缺少单引号。 -
我的验证码是简单的数学问题,例如 2+12=?所以 capthcha1 是 2 ,captcha2 = 12,用户必须输入 14