如何在django中编辑通过表单接收的数据?
我在学Django。有一个搜索栏。这是用来搭配俄语的。 这个词的形式很简单 如何在开始时将单词编码为utf-8?因此,它会在某个时刻创建UnicodeDeer错误。 或者,有哪些方法可以更改原始请求 数据库设置为utf-8 多谢各位 这是回溯如何在django中编辑通过表单接收的数据?,django,forms,unicode,utf-8,request,Django,Forms,Unicode,Utf 8,Request,我在学Django。有一个搜索栏。这是用来搭配俄语的。 这个词的形式很简单 如何在开始时将单词编码为utf-8?因此,它会在某个时刻创建UnicodeDeer错误。 或者,有哪些方法可以更改原始请求 数据库设置为utf-8 多谢各位 这是回溯 Traceback: File "/usr/local/lib/python2.6/dist-packages/django/core/handlers/base.py" in get_response 111.
Traceback:
File "/usr/local/lib/python2.6/dist-packages/django/core/handlers/base.py" in get_response
111. response = callback(request, *callback_args, **callback_kwargs)
File "/home/teodor/moldova/search/views.py" in results
27. return render_to_response(template_name, locals(), context_instance = RequestContext(request))
File "/usr/local/lib/python2.6/dist-packages/django/shortcuts/__init__.py" in render_to_response
20. return HttpResponse(loader.render_to_string(*args, **kwargs), **httpresponse_kwargs)
File "/usr/local/lib/python2.6/dist-packages/django/template/loader.py" in render_to_string
176. return t.render(context_instance)
File "/usr/local/lib/python2.6/dist-packages/django/template/base.py" in render
140. return self._render(context)
File "/usr/local/lib/python2.6/dist-packages/django/template/base.py" in _render
134. return self.nodelist.render(context)
File "/usr/local/lib/python2.6/dist-packages/django/template/base.py" in render
823. bit = self.render_node(node, context)
File "/usr/local/lib/python2.6/dist-packages/django/template/debug.py" in render_node
74. return node.render(context)
File "/usr/local/lib/python2.6/dist-packages/django/template/loader_tags.py" in render
123. return compiled_parent._render(context)
File "/usr/local/lib/python2.6/dist-packages/django/template/base.py" in _render
134. return self.nodelist.render(context)
File "/usr/local/lib/python2.6/dist-packages/django/template/base.py" in render
823. bit = self.render_node(node, context)
File "/usr/local/lib/python2.6/dist-packages/django/template/debug.py" in render_node
74. return node.render(context)
File "/usr/local/lib/python2.6/dist-packages/django/template/loader_tags.py" in render
123. return compiled_parent._render(context)
File "/usr/local/lib/python2.6/dist-packages/django/template/base.py" in _render
134. return self.nodelist.render(context)
File "/usr/local/lib/python2.6/dist-packages/django/template/base.py" in render
823. bit = self.render_node(node, context)
File "/usr/local/lib/python2.6/dist-packages/django/template/debug.py" in render_node
74. return node.render(context)
File "/usr/local/lib/python2.6/dist-packages/django/template/loader_tags.py" in render
62. result = block.nodelist.render(context)
File "/usr/local/lib/python2.6/dist-packages/django/template/base.py" in render
823. bit = self.render_node(node, context)
File "/usr/local/lib/python2.6/dist-packages/django/template/debug.py" in render_node
74. return node.render(context)
File "/usr/local/lib/python2.6/dist-packages/django/template/loader_tags.py" in render
62. result = block.nodelist.render(context)
File "/usr/local/lib/python2.6/dist-packages/django/template/base.py" in render
823. bit = self.render_node(node, context)
File "/usr/local/lib/python2.6/dist-packages/django/template/debug.py" in render_node
74. return node.render(context)
File "/usr/local/lib/python2.6/dist-packages/django/template/base.py" in render
1178. _dict = func(*resolved_args, **resolved_kwargs)
File "/home/teodor/moldova/search/templatetags/search_tags.py" in pagination_links
23. params = urllib.urlencode(raw_params)
File "/usr/lib/python2.6/urllib.py" in urlencode
1267. v = quote_plus(str(v))
Exception Type: UnicodeEncodeError at /search/results/
Exception Value: 'ascii' codec can't encode characters in position 0-4: ordinal not in range(128)
我搜索了word:khааааааааа我对此没有太多经验,但根据,您可能希望尝试将accept charset=UTF-8属性添加到标记中 你在哪里看到独角兽?你能给我们看一些代码吗 编辑:啊,好的。是的-我认为Django将所有文本作为Unicode对象提供。如果我正确理解了回溯,那么当您在这个unicode对象上调用str并将其与urllib.quote_plus一起使用时,就会出现问题 我认为您需要为urllib.quote_plus提供ASCII编码的文本,请参见示例 根据,我认为你可以这样做:
import unicodedata
v_as_ascii = unicodedata.normalize('NFKD', v.decode('UTF-8')).encode('ascii', 'ignore')
v = quote_plus( v_as_ascii )
我还没有测试过这些,所以我可能完全错了。希望有经验的人会来。我对此没有太多经验,但根据,您可能希望尝试将accept charset=UTF-8属性添加到标记中 你在哪里看到独角兽?你能给我们看一些代码吗 编辑:啊,好的。是的-我认为Django将所有文本作为Unicode对象提供。如果我正确理解了回溯,那么当您在这个unicode对象上调用str并将其与urllib.quote_plus一起使用时,就会出现问题 我认为您需要为urllib.quote_plus提供ASCII编码的文本,请参见示例 根据,我认为你可以这样做:
import unicodedata
v_as_ascii = unicodedata.normalize('NFKD', v.decode('UTF-8')).encode('ascii', 'ignore')
v = quote_plus( v_as_ascii )
我还没有测试过这些,所以我可能完全错了。希望有经验的人会来。你根本不需要编码:尽量使用Unicode。发布实际的回溯。你根本不需要编码:尽量使用Unicode。发布实际的回溯。