为 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'))
。但它在
时有效
- 我把
.encode('utf8')
放在最后就解决了
- 我用的是没有翻译工具的字符串
- 我使用其他文本,例如
_('other string')
- 我在最后添加字符串:
_('firstname')+''
- 我在视图中使用翻译:
{% trans "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 字母é
我有联系表
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'))
。但它在
- 我把
.encode('utf8')
放在最后就解决了 - 我用的是没有翻译工具的字符串
- 我使用其他文本,例如
_('other string')
- 我在最后添加字符串:
_('firstname')+''
- 我在视图中使用翻译:
{% trans "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 字母é