好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Django2:Web项目开发入门笔记(17)

这一篇教程,我们一起来了解Django的表单(Forms)。

这篇教程参考了官方文档,内容比较详细。

一、HTML表单

首先,我们先更多的了解一些HTML中表单的相关知识。

在我们之前所接触的内容中,已经使用过HTML表单。

一个HTML表单包含一对<form>标签,并在这对标签中包含一个或多个表单元素标签<input>以及其它可能需要的元素标签。

根据Django的官方文档描述,一个表单需要指定两件事:

什么位置:与用户输入相对应的数据返回到哪一个URL路径; 什么方法:采用哪一种HTTP方法返回的数据。

提示:这里的返回我理解为从客户端返回到服务器。

实际上就是给出表单的提交动作(action属性)和提交的方法(method属性)。

1、action

action的属性值可以是一个文件,例如CGI编程中属性值是一个CGI脚本文件的名称);

它也可以是一个路径,例如《 Django2:Web项目开发入门笔记(8) 》中我们就是这样使用。

2、method

method的属性值可以是“GET”或者“POST”。

如果大家够细心的话,应该看出了这两种提交方法的区别。

简单来说,“GET”方法提交的表单数据会以参数形式呈现在浏览器的URL中,例如:https://www.baidu.com/s?wd=opython&nojc=1;

而“POST”方法则看不到提交的数据内容。

看上去“POST”比“GET”更加安全(在HTTPS中同样安全)。

那为什么不只用“POST”而丢弃“GET”呢?

实际上,他们各有各的特点,能够应用于不同的目的。

“Post”通常会应用于:

改变系统状态:对数据库进行增、删、改的操作; 保护加密数据:类似注册、登录、支付等需要加密的表单数据,要避免将数据暴露在URL或者服务器日志中; 保护系统权限:避免攻击者模仿表单内容获取敏感信息。

“GET”通常会应用于:

数据查询搜索:查询结果能够比较方便的存为书签,进行共享或者再次提交。

另外,“GET”适合少量数据提交,不适合提交大量数据,类似图片的二进制数据。

二、Django对于表单的作用

Django能够将大部分表单相关的工作简单化以及自动化,并且比程序员自己写的代码有更高的安全性。

它承担三部分工作:

准备和重组数据准备渲染 创建HTML表单的数据 接收和处理从客户端提交的表单和数据

这些都不再需要自己写代码去完成。

三、Django中的表单

在一个Web应用程序的上下文中,“form”并不单指HTML的<form>,也可能是Django的Form类的实例,或是提交时返回的结构化数据;在端对端工作中还可能是这些部分的集合。

Django中表单的核心组件是Forms类。

和一个Django的模型描述一个对象的逻辑结构、行为以及各部分的表现方式类似,Forms类描述了一个表单并决定它如何工作与呈现。

例如,一个模型类的字段映射到一个数据表的字段,一个表单类的字段映射到一个HTML表单的<input>元素。(一个ModelForm类可以通过Form映射一个模型类中的全部字段到HTML表单中相对应的 <input> 元素 ; Django admin即是基于此实现。)

查看更多关于Django2:Web项目开发入门笔记(17)的详细内容...

  阅读:21次