Django2.0——Form组件简单总结
Django提供了一个Form组件来配和前端的表单进行使用,Form有两个强大的功能,分别是生成HTML代码和验证数据的合法性。通常我们不会用其第一个功能,因为前端的设计可以做出更加精美且多样的表单页面,为什么要用python呢?而另一个验证功能是经常会在view中使用到的。这个组件所在库为django.forms。
我们一般会在app下创建一个form.py的文件来专门写form类。写form和写models几乎是一模一样的,它同样需要建立其字段名及其类型和参数,不同的是他没有null、blank等几种参数。下面介绍几个常用的字段类型及其参数。
- 所有字段都可使用的参数:
required=True, 是否允许为空
widget=None, HTML插件
label=None, 用于生成Label标签或显示内容
initial=None, 初始值
help_text='', 帮助信息(在标签旁边显示)
error_messages=None, 错误信息 {'required': '不能为空', 'invalid': '格式错误'}
show_hidden_initial=False, 是否在当前插件后面再加一个隐藏的且具有默认值的插件(可用于检验两次输入是否一直)
validators=[], 自定义验证规则
localize=False, 是否支持本地化
disabled=False, 是否可以编辑
label_suffix=None Label内容后缀
- CharField
max_length=None, 最大长度
min_length=None, 最小长度
strip=True 是否移除用户输入空白
- IntegerField
max_value=None, 最大值
min_value=None, 最小值
- EmailField
forms类写完后,我们会在视图函数中导入,并以request.POST作为参数进行实例化,得到form的实例化对象。这个对象可以通过cleaned_data来保存用户提交上来的数据,并返回一个字典对象,这时就可以用get方法取到相应的值。对于实例化后的对象,还可以通过is_valid()方法判断提交上来的数据是否合乎form字段的要求,这是form组件最有价值的一点。若发现数据不合法,可通过传递变量的方式,将实例化对象传到指定模板中,再利用对象.字段名.errors.0来显示错误提示。错误提示可自己在error_message参数中自定义。
Session
Session不同于Cookie的是Session具有更高的安全性,因为cookie是将所有的数据都存储在本地浏览器中,而Session是将数据存储在服务端的数据库,只返回一个session_id存储于cookie中,当我们启用会话后,每一个request对象都有一个Session属性,这个属性是一个类似于字典的对象,故可以使用get方法取出里面携带的值。
- get(key, default=None)
- clear():清空所有会话
- flush():删除当前会话数据并删除会话的Cookie
- del request.session['session_id']:删除指定的session
- set_expire(value):设定session有效期,若value是整数,单位则为秒、若value为0,表示会话在浏览器关闭时,session失效、若value为None,表示会话永不过期、若value是一个datatime对象或timedelta,表示session会在这个时间后失效。
Django一般是默认配置好了session的启动,在setting.py中会有一下两条信息,则表示配置好了。
下篇博客会利用这些知识实现简单的注册、登陆界面。
Django2.0——Form组件简单总结的更多相关文章
- django框架中form组件的简单使用示例:注册验证
Django中form组件的三大特点: 1. 生成页面可使用的HTML标签 2. 对用户提交的数据进行初步校验 3. 保留上次输入内容 废话不多说,直接进入正题. 这是注册界面截图: 与上一篇a ...
- python---django中form组件(1)简单使用和字段了解
Django中的Form组件功能: 1.对用户请求的验证 2.生成html代码 Form使用:对用户请求进行验证 前端代码: <form action="/f1.html" ...
- Django的form组件基本使用——简单校验
from django.contrib import admin from django.urls import path from app01 import views urlpatterns = ...
- 《玩转Django2.0》读书笔记-Django建站基础
<玩转Django2.0>读书笔记-Django建站基础 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.网站的定义及组成 网站(Website)是指在因特网上根据一 ...
- Django2.0使用
创建项目: 通过命令行的方式:首先要进入到安装了django的虚拟环境中.然后执行命令: django-admin startproject [项目的名称] 这样就可以在当前目录下创建一个项目了. 通 ...
- ASP.NET2.0自定义控件组件开发 第六章 深入讲解控件的属性
原文:ASP.NET2.0自定义控件组件开发 第六章 深入讲解控件的属性 深入讲解控件的属性持久化(一) 系列文章链接: ASP.NET自定义控件组件开发 第一章 待续 ASP.NET自定义控件组件开 ...
- 小而美的 React Form 组件
背景 之间在一篇介绍过 Table 组件< React 实现一个漂亮的 Table > 的文章中讲到过,在企业级后台产品中,用的最多且复杂的组件主要包括 Table.Form.Chart, ...
- Web框架django[Form]组件
新手上路 Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 小试牛刀 1.创建Form类 # 创 ...
- Django框架基础之Form组件
服务端假设所有用户提交的数据都是不可信任的,所以Django框架内置了form组件来验证用户提交的信息 form组件的2大功能: 1 验证(显示错误信息) 2 保留用户上次输入 ...
随机推荐
- Spring入门之四-------SpringIoC之其他知识点
一.懒加载 public class Bean1 { public Bean1() { System.out.println(this.getClass().getSimpleName() + &qu ...
- Eclipse Unable to install breakpoint in XXX
Eclipse Unable to install breakpoint in 的问题, 到window-preferences-java-compiler下面 把Add line number ...
- redis : Can't save in background: fork: Cannot allocate memory
redis : Can't save in background: fork: Cannot allocate memory JAVA程序报错信息: MISCONF Redis is configur ...
- Python基础笔记:字符串和编码
1. 当处理文本时,需要现将文本转换为文字,一个字节为8位儿,一个字节最高表示整数255(1111 1111),对应255个状态: 最为人熟知的是ASCii码,ASCii码含128个状态,满足了英文编 ...
- windows平台上运行Flink_转载于CSDN
Flink安装部署-window 本地部署原创冰上浮云 发布于2019-08-17 15:56:06 阅读数 633 收藏分类专栏: flink版权声明:本文为博主原创文章,遵循 CC 4.0 BY- ...
- 移动端触屏click点击事件延迟问题,以及tap的解决方案
在移动端 触屏click事件虽然也会响应,但是总感觉是有延迟,一直听说click事件在手机上有200~300毫秒的延迟问题,亲自测了一下,在pc端模拟手机的话是测不出来的,但是用手机测试时发现延迟非常 ...
- 留学Essay写作常见谬误盘点
留学生在完成英语论文作业的时候总会出现各种各样的谬误,导致最后拿不到高分,甚至挂科,最终只得选择写作完成.本文小编为大家总结出我们留学生在essay写作中几个常见谬误,希望大家有则改之,无则加勉. E ...
- Python 删除文件与文件夹
版权所有,未经许可,禁止转载 章节 Python 介绍 Python 开发环境搭建 Python 语法 Python 变量 Python 数值类型 Python 类型转换 Python 字符串(Str ...
- 【转载】webdriver 自动化测试如何定位到动态变化ID的iframe框内
大家知道,在自动化测试脚本编写过程中,如果页面上跳出一个iframe框时,我们是定位不到框内内容的,可以通过 driver.findElement(By.id("")); driv ...
- 学习spring的第三天
1.手动的依赖注入出了昨天所讲的利用<property>和<constructor-arg>标签设置注入外还可以通过属性值设置,这样就少些了一些代码... 1.1:直接在< ...