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 ']}
はい私は# - * - エンコーディングを持っています:utf-8 - * - – Jeroj82