为 Django 表单编码 UTF-8

Encode UTF-8 for Django form

我有联系表

class ContactForm(forms.Form):
    name = forms.CharField(required=True, max_length=100, label=_('firstname'))
    mail = forms.EmailField(required=True, max_length=150, label=_('mail'))

def display(request):
    form = ContactForm(request.POST)
    if form.is_valid(): 
       ...
    else:
       form = ContactForm()  

    return render_to_response('contact.html', {'contact_form' : form}, context_instance=RequestContext(request))

from django.utils.translation import gettext_lazy as _

在我的模板中contact.html

<form action="#" method="post" >{% csrf_token %}
    {{ contact_form.as_p  }}
    <input type="submit" value="Send" />
</form>

我有这个错误

'ascii' codec can't encode character u'\xe9' in position 2: ordinal not in range(128)

Unicode error hint

The string that could not be encoded/decoded was: Prénom

问题是_('firstname'))。但它在

时有效

但我不想在我的联系表(包含更多属性)的所有属性中执行此操作。

我怎样才能同时对姓名和电子邮件执行此操作?

谢谢

在第一行输入:

# -*- coding: utf-8 -*-

Python 将此行识别为整个文件的编码类型说明。

您没有指定是否使用 ModelForms,但是您能否在您的模板中检查您的浏览器将使用 form 标记中的 content='text/html; charset=UTF-8' 属性正确编码提交的数据?喜欢:

<form action='/someurl' method='post' content='text/html; charset=UTF-8'>

解决方案 是用ugettext_lazy 替换gettext_lazy 因为字符串Prénom 包含一个特殊的unicode 字母é