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组件简单总结的更多相关文章

  1. django框架中form组件的简单使用示例:注册验证

    Django中form组件的三大特点: 1. 生成页面可使用的HTML标签 2. 对用户提交的数据进行初步校验    3. 保留上次输入内容 废话不多说,直接进入正题. 这是注册界面截图: 与上一篇a ...

  2. python---django中form组件(1)简单使用和字段了解

    Django中的Form组件功能: 1.对用户请求的验证 2.生成html代码 Form使用:对用户请求进行验证 前端代码: <form action="/f1.html" ...

  3. Django的form组件基本使用——简单校验

    from django.contrib import admin from django.urls import path from app01 import views urlpatterns = ...

  4. 《玩转Django2.0》读书笔记-Django建站基础

    <玩转Django2.0>读书笔记-Django建站基础 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.网站的定义及组成 网站(Website)是指在因特网上根据一 ...

  5. Django2.0使用

    创建项目: 通过命令行的方式:首先要进入到安装了django的虚拟环境中.然后执行命令: django-admin startproject [项目的名称] 这样就可以在当前目录下创建一个项目了. 通 ...

  6. ASP.NET2.0自定义控件组件开发 第六章 深入讲解控件的属性

    原文:ASP.NET2.0自定义控件组件开发 第六章 深入讲解控件的属性 深入讲解控件的属性持久化(一) 系列文章链接: ASP.NET自定义控件组件开发 第一章 待续 ASP.NET自定义控件组件开 ...

  7. 小而美的 React Form 组件

    背景 之间在一篇介绍过 Table 组件< React 实现一个漂亮的 Table > 的文章中讲到过,在企业级后台产品中,用的最多且复杂的组件主要包括 Table.Form.Chart, ...

  8. Web框架django[Form]组件

    新手上路 Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 小试牛刀 1.创建Form类 # 创 ...

  9. Django框架基础之Form组件

    服务端假设所有用户提交的数据都是不可信任的,所以Django框架内置了form组件来验证用户提交的信息 form组件的2大功能:       1 验证(显示错误信息)       2 保留用户上次输入 ...

随机推荐

  1. Json实体类驼峰名称转化器

    背景 我们常用一些网站,将json转化成实体类.但不巧的是,这些自动生成的都是小驼峰.需要进一步的改成大驼峰+JsonProperty.接着同事说他已经有个工具了.我稍微简化了一下 方法 首先行分离. ...

  2. P1082 射击比赛

    P1082 射击比赛 转跳点:

  3. HDU - 6143 Killer Names(dp记忆化搜索+组合数)

    题意:从m种字母中选取字母组成姓名,要求姓和名中不能有相同的字母,姓和名的长度都为n,问能组成几种不同的姓名. 分析: 1.从m种字母中选取i种组成姓,剩下m-i种组成名. 2.i种字母组成长度为n的 ...

  4. duilib 之 List控件

    List控件是我们常用到的控件,也是应用很广泛. 对LIST控件添加元素有两种方法,一种是直接在XML中写死元素,另一种是动态创建.另外,LIST的应用也分为两种,一种需要表头,另一种是不需要表头.对 ...

  5. Python练习题3

    1.九九乘法表 li = [1,2,3,4,5,6,7,8,9] for i in li: for j in li: if i >= j: print(i,'*',j,'=',i*j,end=& ...

  6. 【LeetCode】课程表 II

    [问题]现在你总共有 n 门课需要选,记为 0 到 n-1.在选修某些课程之前需要一些先修课程.例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1]给定课程总量以及 ...

  7. Django--评论功能实现和用户登录

    1.确定实现评论功能的方式 1.第三方社会化评论插件(有言.多说.网易云跟帖等) 优点:可以直接用,紧急时开发快 缺点:评论存储在第三方,第三方挂了就不弄用 2.Django评论库 django-co ...

  8. Swift泛型定义 同时限定T的类(class)和多协议(protocol)

    https://blog.csdn.net/weixin_34054931/article/details/88027728 swift 可以定义模板函数,如: func testFunc<T& ...

  9. ntpdate更新系统时间时报错Can't find host ntp1.aliyun.com: Servname not supported for ai_socktype (-8)

    ntpdate更新系统时间时报错Can't find host ntp1.aliyun.com: Servname not supported for ai_socktype (-8) 所报错误: [ ...

  10. kafka管理神器-kafkamanager

    好久没发过kafka的文章了,今天整理一下kafka-manager神器. java环境要求 jdk8 kafkamanager源码下载 https://github.com/yahoo/kafka- ...