I want to add a verify code field in the login form.
So, I write a authentication_form which added a charField to generate a
verify code and the verify code saved to the request.session.
But When I send login form request,I find in my authentication_form, I can't
campare the session's verify code and the clean_data["verifycode"],
Because the request in Null when invoke my authentication_form.

code below and the question in line highlighted like *###HERE*

class MyAuthenticationForm(AuthenticationForm):

    verifyimg=forms.CharField(label="verifycode",widget=vericonf.CaptchaWidget)


    def __init__(self, request=None,*args, **kwargs):
        self.request=request
        kwargs_new = {'error_class': DivErrorList}
        kwargs.update(kwargs_new)
        #elf.error_class = DivErrorList
        super(MyAuthenticationForm,self).__init__(*args, **kwargs)


    def as_div(self):
        "Returns this form rendered as HTML div."
        return self._html_output(
            normal_row = u'<div%(html_class_attr)s
style="float:left;"><div class="formlabel">%(label)s</div><div
class="formfield">%(field)s%(help_text)s</div><div
class="formerror">%(errors)s</div></div>',
            error_row = u'<div>%s</div>',
            row_ender = u'</div></div>',
            help_text_html = u'<div style="float:left;"><span
class="helptext">%s</span></div>',
            errors_on_separate_row = False)

    def clean_verifyimg(self):
        pass

    def clean(self):
        vericode=""
        username = self.cleaned_data.get('username')
        password = self.cleaned_data.get('password')

        if self.request and self.request.session and
self.request.session.get("verifyimg"):
            vericode = self.request.session.get("verifyimg")

        print vericode  *###HERE request.session is Null then I can't
compare vericode and verify now.How to do it?*

        verify=self.cleaned_data.get('verifyimg')
        print verify

        if username and password:
            self.user_cache = authenticate(username=username, password=password)
            if self.user_cache is None:
                raise forms.ValidationError(_("Please enter a correct
username and password. Note that both fields are case-sensitive."))
            elif not self.user_cache.is_active:
                raise forms.ValidationError(_("This account is inactive."))
        if verify and vericode:
            if verify != vericode:
                raise forms.ValidationError("verify code is wrong.pls
Try again!")

        self.check_for_test_cookie()

        return self.cleaned_data



-- 
"OpenBookProject"-开放图书计划邮件列表
详情: http://groups.google.com/group/OpenBookProject
维基: http://wiki.woodpecker.org.cn/

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to