简体   繁体   English

如何在表单的标识字段上验证表单上的字段。 Django的

[英]How I can validate fields on forms on identity fields in form. Django

How I can validate fields on forms on identity fields in form instantly without POST request? 我如何在没有POST请求的情况下立即验证表单中标识字段上表单中的字段?

my fields in model: 我在模型中的字段:

password = models.CharField(max_length=45, verbose_name="")
password2 = models.CharField(max_length=45, verbose_name="")

and my fields in form: 和我的字段形式:

'password': widgets.PasswordInput(attrs={'placeholder': 'New Password'}),
'password2': widgets.PasswordInput(attrs={'placeholder': 'Re-Entere Password'}),

This is the code I tried: 这是我尝试的代码:

def clean_password(self):
password1 = self.cleaned_data.get('password')
password2 = self.cleaned_data.get('password2')
if not password2:
    raise forms.ValidationError("You must confirm your password")
if password1 != password2:
    raise forms.ValidationError("Your passwords do not match")
return password2 

Code in view: 查看代码:

def saves_data_user_on_registration (request):
    if request.method == 'POST':
        c = {}
        c.update(csrf(request))
        form_user_data = Form_registration(request.POST, request.FILES)
        if form_user_data.is_valid():
            print form_user_data.errors
            form_user_data.save()
            return render_to_response('see_you_later.html', c, context_instance=RequestContext(request))
        else:
            print form_user_data.errors
            return render_to_response('error.html', c, context_instance=RequestContext(request))

I you want to access two fields during validation you need to use clean() not clean_myfield() . 我想在验证期间访问两个字段,您需要使用clean()而不是clean_myfield()

Check the docs. 检查文档。

What do you mean with "without a POST request?". “没有POST请求”是什么意思?

I would never accept passwords via GET. 我永远不会通过GET接受密码。 HTTP GET requests get stored in proxies and caches! HTTP GET请求将存储在代理和缓存中!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM