2017-03-02 40 views
0

我開始在TDD的想法,所以首先我寫測試的新項目。但是我有一個UTF(我認爲)Django和python 2.7問題與表單錯誤的unicode

我有簡單的登錄表單的問題

from django.utils.translation import ugettext_lazy as _ 

ERRORS_MESSAGES = { 
    'not_active': _(u"Użytkownik nie jest aktywny"), 
    'user_not_exist': _(u"Użytkownik o podanym loginie już istnieje") 
} 


class LoginForm(forms.Form): 
    username = forms.CharField(max_length=50) 
    password = forms.CharField(max_length=50, widget=forms.PasswordInput) 

    def clean(self): 
     username = self.cleaned_data.get('username') 
     password = self.cleaned_data.get('password') 
     user = authenticate(username=username, password=password) 
     if not user: 
      raise forms.ValidationError(ERRORS_MESSAGES['user_not_exist']) 
     if not user.is_active: 
      raise forms.ValidationError(ERRORS_MESSAGES['not_active']) 
     return self.cleaned_data 

而且在測試:

user = User.objects.create(
    username='asd', password='asd', email='[email protected]' 
) 
form = LoginForm(data={'username': 'asd', 'password': 'asd'}) 
self.assertEqual(form.is_valid(), False) 
print "ERRORS:", form.errors['__all__'] 
self.assertIn(ERRORS_MESSAGES['not_active'], form.errors) 

和控制檯輸出:

# here, char 'ż' looks fine, 
ERRORS: <ul class="errorlist nonfield"><li>Użytkownik o podanym loginie już istnieje</li></ul> 
# but next: 
self.assertIn(ERRORS_MESSAGES['not_active'], form.errors) 

的AssertionError :未找到{'全部':[u'U \ u017cytkownik o podanym loginie菊\ u017c istnieje']}

回答

0

你把

#-*- encoding: utf-8 -*- 

在文件的第一行?

編輯: 從消息我可以假設已經有一個用戶與asd名稱。

+0

是的,我有# - * - encoding:utf-8 - * - – Jeroj82