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

时间:2014-08-11 20:54:43

标签: python django django-forms django-views

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

Django中有这段代码:

if request.method == 'POST':
     do_something()

它检查表单是否真的在POST方法中提交。我的问题是:它是否还检查请求中是否有表单数据?我的意思是,我可以使用preview页面的网址,只需访问此链接而无需填写表单字段。上面的检查是否检测到这种情况?

如果没有检查表单数据是否存在,我该如何实现?顺便说一句,我没有使用Django forms。我只是在这样的视图中接收数据:

data['year'] = request.POST.get('year')

并且所有验证都在Javascript的前端进行。

3 个答案:

答案 0 :(得分:1)

不,这只是一个HTTP Request方法检查。

为了检查表单数据是否存在(如果表单有效),请在is_valid()实例上调用Form

答案 1 :(得分:1)

只检查方法,它不检查表单数据。 POST方法的一些用法不包括表单数据,例如,如果创建资源所需的所有信息都在URL中。

如果您使用的是Django的表单系统,如果没有表单数据,表单验证当然无法通过。

答案 2 :(得分:1)

首先,我鼓励大家去参加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

的信息