检查请求中是否存在表单数据



我知道这是个疯狂的问题,但我只是想确定一下。

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的信息

相关内容

最新更新