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']}
是的,我有# - * - encoding:utf-8 - * - – Jeroj82