我知道这是个疯狂的问题,但我只是想确定一下。
Django
中有这样的代码:
if request.method == 'POST':
do_something()
它检查表单是否真的通过POST方法提交。我的问题是:它是否也检查是否有一个表单数据在请求?我的意思是,我可以把preview
页面的url直接访问这个链接,而不需要填写表单字段。以上检查是否检测到这种情况?
如果它不检查表单数据的存在,我怎么能做到这一点?顺便说一句,我没有使用Django
forms
。我正在接收视图中的数据,如下所示:
data['year'] = request.POST.get('year')
和所有的验证都发生在前端的Javascript
。
不,这只是一个HTTP Request
方法检查。
Form
实例上调用is_valid()
。
这只检查方法,它不检查表单数据。POST方法的某些用途不包括表单数据,例如,如果创建资源所需的所有信息都在URL中。
如果你使用Django的表单系统,如果没有表单数据,表单验证当然会失败。
首先,我鼓励大家使用django-forms。我也将从现在开始逐步切换到django表单。
但是对于那些像我一样错过了美丽的django表单的人来说,这是一个快速的解决方案,可以检查请求体内是否有表单数据。
if len(request.body) > 0:
# there is something inside request body
else:
# random link visit and no form data at all
这里有更多关于HttpRequest.body的信息