Django 表单处理
在Django中创建表单与创建模型非常类似。同样,在这里,我们只需要继承Django类,类属性将成为表单的字段。让我们在myapp文件夹中添加一个 forms.py 文件,用于存放我们的应用程序表单。我们将创建一个登录表单。
myapp/forms.py
如上所示,字段类型可以接受”widget”参数进行HTML渲染;在我们的情况下,我们希望密码被隐藏,不显示。Django中还存在许多其他的widget: DateInput 用于日期, CheckboxInput 用于复选框,等等。
在视图中使用表单
有两种HTTP请求方式,GET和POST。在Django中,传递给视图的请求对象有一个名为”method”的属性,用于设置请求的类型,并且通过POST传递的所有数据可以通过request.POST字典进行访问。
让我们在myapp/views.py中创建一个登录视图:
视图将展示登录表单通过 loggedin.html 发布后的结果。为了测试,我们首先需要登录表单模板,让我们将其命名为login.html。
该模板将显示一个登录表单,并将结果发布到我们上方的登录视图。您可能已经注意到模板中的标签,这是为了防止您的网站遭受跨站请求伪造(CSRF)攻击。
一旦我们有了登录模板,我们需要loggedin.html模板,在表单处理后将被渲染。
现在,我们只需要我们的一对URL来开始:myapp/urls.py
当访问“/myapp/connection”时,将会渲染以下login.html模板。
如果您的用户名是polo,并且您忘记了密码。您将收到以下消息−
使用我们自己的表单验证
在上面的示例中,当验证表单时:
我们只使用了Django自身的表单验证引擎,在我们的情况下只需要确保字段是必填的。现在让我们来确保尝试登录的用户在我们的数据库中作为Dreamreal条目存在。为此,请将myapp/forms.py更改为-
现在,在调用“is_valid”方法之后,只有当用户在我们的数据库中时,我们才能获得正确的输出。如果您想检查表单的某个字段,只需向表单类添加以“clean_”开头,然后是字段名的方法。引发forms.ValidationError是很重要的。