这是一个疯狂的问题,我知道,但我只是想确定一下。
Django
中有这段代码:
if request.method == 'POST':
do_something()
它检查表单是否真的在POST方法中提交。我的问题是:它是否还检查请求中是否有表单数据?我的意思是,我可以使用preview
页面的网址,只需访问此链接而无需填写表单字段。上面的检查是否检测到这种情况?
如果没有检查表单数据是否存在,我该如何实现?顺便说一句,我没有使用Django
forms
。我只是在这样的视图中接收数据:
data['year'] = request.POST.get('year')
并且所有验证都在Javascript
的前端进行。
答案 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
的信息