当表单提交时,表单数据应该在请求的Request.POST中。但在某些情况下,您可能会发现表单数据没有显示在Request.POST中。这可能是因为表单的 enctype 属性被设置为 "multipart/form-data" 或者数据中包含非ASCII字符。
要解决这个问题,您需要确保在包含文件和非 ASCII 字符的情况下正确提交表单数据。
如果您的表单包含文件,需要在模板中添加enctype="multipart/form-data"属性。例如:
如果您的表单包含非 ASCII 字符(例如中文),则在提交表单数据之前进行编码。在处理数据之前通常需要在视图中使用 utf-8 编码解析请求。
例如,用如下代码进行表单编码:
import urllib.parse ... data = {'name': '张三', 'age': 25} query_string = urllib.parse.urlencode(data) ...
然后使用以下代码解析请求:
from django.utils import encoding ... data = encoding.smart_str(request.POST.get('name')) ...