0

我是 django 和 python 开发的新手,我对如何处理异常的理解很天真。

我正在通过调用方法 register 的 api 调用注册用户,并希望在注册时推送成功状态或错误消息。

def register(self,request, **kwargs):

        try:    
            data = self.deserialize(request, request.raw_post_data, format=request.META.get('CONTENT_TYPE', 'application/json'))
            email = data['email']
            password = data['password']
            firstname = data['firstname']
            lastname = data['lastname']
            newdata = {'email' : email , 'password1': password , 'password2':password, 'firstname':'firstname' , 'lastname':lastname }

            registrationform = UserEmailRegistrationForm(newdata)
            print registrationform.errors.as_text
            print registrationform.cleaned_data
            cleaned_data = registrationform.cleaned_data
            if Site._meta.installed:
                site = Site.objects.get_current()
            else:
                site = RequestSite(request)

            new_user = RegistrationProfile.objects.create_inactive_user(cleaned_data['username'],cleaned_data['email'],cleaned_data['password1'], site)
            signals.user_registered.send(sender=self.__class__,
                                         user=new_user,
                                         request=request,**cleaned_data)
            registerUser = collections.OrderedDict()
            registerUser['return']='0'
            registerUser['code']='0'
            registerUser['message']='registered user'
            return HttpResponse(registerUser, content_type="application/json")
        except Exception, e:
            logging.exception(e)
            registerUser = collections.OrderedDict()
            registerUser['return']='0'
            registerUser['code']='0'
            registerUser['message']='registered user'
            return HttpResponse(registerUser, content_type="application/json")

当我执行此操作时,例如使用已注册的电子邮件,我在registrationform.errors.as_text 中得到以下信息

bound method ErrorDict.as_text of {'email': [u'A user with that email already exists.']}>

编写异常代码的正确方法是什么,以便在验证表单并注册用户时传递成功消息,如果出现验证错误则传递错误消息?

任何帮助深表感谢!

4

1 回答 1

1

您可能想查看表单的 is_valid() 方法:https ://docs.djangoproject.com/en/dev/ref/forms/api/#django.forms.Form.is_valid

例如

if registrationform.is_valid():
   //do your stuff
   ....
   register['error'] = False
else:
   //return the errors
   registerUser['message'] = _('Oops! Please fix the following errors')
   register['error'] = True
   register['errors'] = registrationform.errors
   ....
于 2013-07-30T21:22:10.727 回答