Django - 如果没有填写特定字段,如何只将表单保存到数据库(注册垃圾邮件的蜜罐陷阱)

时间:2017-12-06 12:41:22

标签: django django-models django-forms django-templates django-views

我最近在网站注册表上遇到了一些假注册问题。我已经决定了解决这个问题的最佳方法是创建一个'隐形'蜜罐表单字段。

我在models.py和forms.py中创建了这个新的'假'表单字段,我在我的模板中渲染了该字段,并且我在CSS中使用'display:none'隐藏了真实用户的字段。我现在想要做的只是在没有填写“假”字段的情况下将表单保存到数据库中。

例如,我想做这样的事情:

    if form.is_valid() and fakeformfield.is_null():
            instance = form.save(commit=False)
            instance.save()
            return redirect('thankyou')

如果您需要查看我的代码,我会更新问题。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

if form.is_valid():
    fake_field_value = form.cleaned_data.get('fakeformfield')
    if not fake_field_value:
        instance = form.save(commit=False)
        instance.save()
return redirect('thankyou')

这可以满足您的需求。但我不确定它怎么能阻止虚假提交。如果有人试图使用爬虫做这件事,他可以简单地看到这个字段是隐藏的并且会避免填充该值。考虑使用验证码。