Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django表单类问题_Django - Fatal编程技术网

Django表单类问题

Django表单类问题,django,Django,我正在做一个用户注册表格。以下是我的模板的外观: <h1>Register</h1> <form action="/register/" method="post"> {{ form.as_p }} <input type="submit" value="Register"> </form> from django import forms class RegisterForm(for

我正在做一个用户注册表格。以下是我的模板的外观:

<h1>Register</h1>
    <form action="/register/" method="post">
        {{ form.as_p }}
        <input type="submit" value="Register">
    </form>
from django import forms

class RegisterForm(forms.Form):
    username = forms.CharField(min_length=6,max_length=15)
    password = forms.CharField(widget = forms.PasswordInput(),min_length=6,max_length=15)
    confirm_password = forms.CharField(widget = forms.PasswordInput(),min_length=6,max_length=15)
    phone_number = forms.RegexField('\d\d\d-\d\d\d-\d\d\d\d',error_message='Invalid format')

    def clean_password(self):
        password = self.cleaned_data['password']
        confirm_password = self.cleaned_data['confirm_password']
        if password != confirm_password:
            raise forms.ValidationError("Passwords don't match")
        return password
我还没有找到有效的部分,我还在处理无效的部分。以下是我的表单的外观:

<h1>Register</h1>
    <form action="/register/" method="post">
        {{ form.as_p }}
        <input type="submit" value="Register">
    </form>
from django import forms

class RegisterForm(forms.Form):
    username = forms.CharField(min_length=6,max_length=15)
    password = forms.CharField(widget = forms.PasswordInput(),min_length=6,max_length=15)
    confirm_password = forms.CharField(widget = forms.PasswordInput(),min_length=6,max_length=15)
    phone_number = forms.RegexField('\d\d\d-\d\d\d-\d\d\d\d',error_message='Invalid format')

    def clean_password(self):
        password = self.cleaned_data['password']
        confirm_password = self.cleaned_data['confirm_password']
        if password != confirm_password:
            raise forms.ValidationError("Passwords don't match")
        return password
用户名,密码,电话号码。很简单。然而,当我在没有填写任何内容的情况下点击“Register”时,我会得到一堆错误,但它们不会出现在任何地方。这应该是自动发生的还是我遗漏了什么


谢谢

我认为您的问题在于,在您的else中,您正在将表单重置为新表单,而新表单尚未验证。尝试从您的else中删除这行代码

rform = forms.RegisterForm()

是的,如果删除该行,您将返回无效表单,其中将包含保留为空的字段的错误消息。这是否回答了您的问题?抱歉,运行了一会儿。是的,这确实回答了我的问题,但是,我仍然遇到了一个问题。我收到一个关于“确认密码”的KeyError异常。我查了一下KeyError,它说“当在现有密钥集中找不到映射(字典)密钥时”引发。根据我对清理的数据的理解,“确认密码”应该在b/c中,但我猜不是