如何在django中编辑通过表单接收的数据?

如何在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.

我在学Django。有一个搜索栏。这是用来搭配俄语的。 这个词的形式很简单

如何在开始时将单词编码为utf-8?因此,它会在某个时刻创建UnicodeDeer错误。 或者,有哪些方法可以更改原始请求

数据库设置为utf-8

多谢各位

这是回溯

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。发布实际的回溯。