【问题标题】:django session key error for my simple captcha form我的简单验证码表单的 django 会话密钥错误
【发布时间】: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

标签: django session captcha


【解决方案1】:

您可能还想查看现有的 Django 验证码包,而不是采用这种方法: https://www.djangopackages.com/grids/g/captcha/

如果您正在寻找简单的东西,Django-Simple-Captcha 是一个不错的选择。

【讨论】:

    猜你喜欢
    • 2020-12-08
    • 2013-03-04
    • 2013-12-09
    • 2016-04-05
    • 2016-03-20
    • 2011-02-21
    • 1970-01-01
    • 1970-01-01
    • 2012-08-13
    相关资源
    最近更新 更多