2017-03-02 9 views
0

私はTDDアイデアで新しいプロジェクトを開始しますので、最初にテストを書きました。しかし、私は(私が思う)UTFDjangoと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 -*- 

を入れましたか?

EDIT: メッセージからは、すでにと表示されています。という名前です。

+0

はい私は# - * - エンコーディングを持っています:utf-8 - * - – Jeroj82

関連する問題