kev*_*kev 25 django post exception request
由于Django 1.5原始帖子数据可以通过request.body访问.
在我的应用程序中,我有时会通过表单和有时原始数据(例如json)发送数据.有没有办法写这样一个不会失败的函数?
def get_post_var(request, name):
result = request.POST.get(name)
if result:
return result
post_body = dict(urlparse.parse_qsl(request.body))
result = post_body.get(name)
if result:
return result
return None
Run Code Online (Sandbox Code Playgroud)
Ada*_*ing 30
该错误You cannot access body after reading from request's data stream将在请求被触发,如果(1),该请求的方法是POST,(2),该请求的POST字典在中间件访问,在任一process_request或process_view和(3)的视图函数中,request.body被访问.在(3)上,即使错误的真正原因是(2),也会引发错误.
为了解决该错误,您需要检查中间件的访问位置request.POST并对其进行修改,使其不再访问request.POST.
Django文档说中间件不应该访问request.POST,这是忽略该建议的一个结果.
另请查看此问题的Django票证,其中包括注释:
[M]命中请求的谜语.POST应该(通常)被认为是一个错误.这意味着视图将无法设置任何自定义上载处理程序,执行请求正文的自定义解析,或在接受文件上载之前强制执行权限检查.
小智 5
使用request.data代替request.body。
request.data 不会再次读取数据流。
| 归档时间: |
|
| 查看次数: |
19758 次 |
| 最近记录: |