在获取 POST 数据 django 中获取 MultiValueDictError
Posted
技术标签:
【中文标题】在获取 POST 数据 django 中获取 MultiValueDictError【英文标题】:Getting MultiValueDictError in fetch POST data django 【发布时间】:2020-12-10 15:42:34 【问题描述】:我正在尝试获取从 html 表单接收的 GET 数据。
但它给了我 MultiValueDictError。 这也是说
During handling of the above exception, another exception occurred:
我的 HTML 代码:
<!DOCTYPE html>
<html>
<head>
<title>Document</title>
</head>
<body>
<form action="home_redirect/fd" id="redirect" method="POST" enctype="multipart/form-data">
% csrf_token %
<input type="text" value=user name="user">
<input type="submit">
</form>
<script>
document.getElementById("redirect").submit()
</script>
</body>
</html>
我的views.py:
def home(request):
user = request.POST['user']
return render(request, 'main.html', 'login': user)
【问题讨论】:
method="post"
,所以数据在request.POST
(请求的有效载荷)中。
【参考方案1】:
在你的 html 中,我删除了 action
和脚本。像这样:
<!DOCTYPE html>
<html>
<head>
<title>Document</title>
</head>
<body>
<form id="redirect" method="POST" enctype="multipart/form-data">
% csrf_token %
<input type="text" value=user name="user">
<input type="submit">
</form>
</body>
</html>
这里我们检查的方法是POST
然后redirect
到你的url
。
def home(request):
user = request.POST
if request.method =="POST":
return redirect('home_redirect') # home_redirect is the redirected url
return render(request, 'afl_announcement/main.html', 'login': user)
【讨论】:
redirect的url名称是什么??return redirect('url_name')
由此可见,url_name
是重定向url的名称
此参考资料可能对您有所帮助:docs.djangoproject.com/en/3.1/topics/http/shortcuts/…。当单击提交按钮到主页功能时,如果您不会在表单中重定向,则获取请求。
return redirect('https://www.google.com/')
轻松尝试重定向到 Google【参考方案2】:
在您的<form>
中指定:
<form action="home_redirect/fd" method="POST" enctype="multipart/form-data">
% csrf_token %
<input type="text" value=user name="user">
<input type="submit">
</form>
所以你发出一个 POST 请求,数据被编码在请求的 payload 中。您通过request.POST
访问这些数据:
def home(request):
user = request.POST['user']
return render(request, 'main.html', 'login': user)
【讨论】:
我按照您所说的进行了更改,但仍然无效。以上是关于在获取 POST 数据 django 中获取 MultiValueDictError的主要内容,如果未能解决你的问题,请参考以下文章
无法从 Django request.POST 获取 POST 数据
在看似有效的 Django Rest Framework Post 请求上获取错误请求,要求在序列化程序数据中请求 FK