2013-07-30 24 views
0

我是django和python開發人員的新手,並且對我理解如何處理異常感到天真。在django表單中爲api提出驗證錯誤

我正在通過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.']}> 

什麼將代碼中的異常正確的方式讓我可以如果表單驗證並且用戶已註冊,則傳遞成功消息,如果出現驗證錯誤則傳遞錯誤消息?

任何幫助非常感謝!

回答