Django表单编码
我正在使用表单将数据发送到我的视图。当我发送charó时,它作为char打印在视图中�. 知道如何正确编码吗 views.py:Django表单编码,django,python-3.x,Django,Python 3.x,我正在使用表单将数据发送到我的视图。当我发送charó时,它作为char打印在视图中�. 知道如何正确编码吗 views.py: # -*- coding: utf-8 -*- def myView(request): if request.method == 'POST': form = MyForm(request.POST) if form.is_valid(): title = form.cleaned_data.get(
# -*- coding: utf-8 -*-
def myView(request):
if request.method == 'POST':
form = MyForm(request.POST)
if form.is_valid():
title = form.cleaned_data.get('title')
print(title) # prints � instead of ó
forms.py:
# -*- coding: utf-8 -*-
class MyForm(forms.ModelForm):
title = forms.CharField(required=False)
myform.html:
<form action="/results/" method="post" content='text/html; charset=UTF-8'>>{% csrf_token %}
{{ form.non_field_errors }}
<div class="fieldWrapper">
{{ form.title.errors }}
<label for="id_name">Title</label>
{{ form.title }}
</div>
<button type="submit">
<i class="fa fa-thumb-tack"></i> Search
</button>
</form>
{%csrf\u令牌%}
{{form.non_field_errors}}
{{form.title.errors}}
标题
{{form.title}}
搜寻
我通过将以下内容添加到html表单中,解决了这个问题:
accept-charset="UTF-8"
正确的形式如下所示:
<form action="/results/" method="post" content='text/html; charset=UTF-8' accept-charset="UTF-8"> {% csrf_token %}
{{ form.non_field_errors }}
<div class="fieldWrapper">
{{ form.title.errors }}
<label for="id_name">Title</label>
{{ form.title }}
</div>
<button type="submit">
<i class="fa fa-thumb-tack"></i> Search
</button>
</form>
{%csrf\u令牌%}
{{form.non_field_errors}}
{{form.title.errors}}
标题
{{form.title}}
搜寻
您在文件中指定的编码与代码处理的实际值的编码完全不同。这就是说,我怀疑您的终端(即实际正在打印的内容)不支持显示该字符;您是否尝试过将该值传递回模板,并查看浏览器是否正确显示该值?感谢您的建议,但该模板显示字符的方式与terminalI使用您的代码的方式几乎完全相同(有一些调整,因为它取决于未提供的代码),我无法重现该结果;ó在终端和浏览器中正确显示。Python 3.5.3,Django 2.1.2。使用和不使用文件编码声明均可正常工作。。。无论您遇到什么问题,都可能是您的本地环境或未提供的部分代码造成的。实际型号title
是标准的CharField吗?我担心这是必要的(当然不是正常的)。如果没有进一步的信息,这件事的发生对我来说意味着在你的环境中至少有一个问题或错误配置,我会担心在没有找到它的情况下继续前进。