Django 的表单处理:视图获取请求,执行所需的任何操作,包括从模型中读取数据,然后生成并返回HTML页面(从模板中),我们传递一个包含要显示的数据的上下文。使事情变得更复杂的是,服务器还需要能够处理用户提供的数据,并在出现任何错误时,重新显示页面。

下面显示了 Django 如何处理表单请求的流程图,从对包含表单的页面的请求开始(以绿色显示):

基于上图,Django 表单处理的主要内容是:

  1. 在用户第一次请求时,显示默认表单。

    • 表单可能包含空白字段(例如,如果您正在创建新记录),或者可能预先填充了初始值(例如,如果您要更改记录,或者具有有用的默认初始值)。
    • 此时表单被称为未绑定,因为它与任何用户输入的数据无关(尽管它可能具有初始值)。
  2. 从提交请求接收数据,并将其绑定到表单。

    • 将数据绑定到表单,意味着当我们需要重新显示表单时,用户输入的数据和任何错误都可取用。
  3. 清理并验证数据。

    • 清理数据会对输入执行清理(例如,删除可能用于向服务器发送恶意内容的无效字符)并将其转换为一致的 Python 类型。
    • 验证检查值是否适合该字段(例如,在正确的日期范围内,不是太短或太长等)
  4. 如果任何数据无效,请重新显示表单,这次使用任何用户填充的值,和问题字段的错误消息。

  5. 如果所有数据都有效,请执行必要的操作(例如保存数据,发送表单和发送电子邮件,返回搜索结果,上传文件等)

  6. 完成所有操作后,将用户重定向到另一个页面。

本文首发于BigYoung小站

最新文章

  1. 安装cocoapods以及更新cocoapods
  2. karottc A Simple linux-virus Analysis、Linux Kernel <= 2.6.37 - Local Privilege Escalation、CVE-2010-4258、CVE-2010-3849、CVE-2010-3850
  3. JavaScript执行顺序分析
  4. 在SharePoint中无代码开发InfoPath应用: 获取当前用户信息
  5. 【MPI学习3】MPI并行程序设计模式:不同通信模式MPI并行程序的设计
  6. Oracle定时执行存储过程
  7. Xamarin Android设置界面提示类型错误
  8. NGUI无法按住鼠标按住时无法监听OnHover事件
  9. CentOS6 搭建git
  10. jQuery基础学习8——层次选择器children()方法
  11. 【LeetCode】24. Swap Nodes in Pairs
  12. 深入了解当前ETL的一些基本技术
  13. jQuery中的自定义插件之----工厂方法(Factory Widget)
  14. [BZOJ]2594 水管局长数据加强版(Wc2006)
  15. vue路由懒加载
  16. 电脑小白和ta的小白电脑——JAVA开发环境
  17. JVM内存分配和垃圾收集策略
  18. [转]data-driven与决策树聚类的两种方法
  19. Jmeter(四十二)Jmeter工作原理
  20. [POST] What Is the Linux fstab File, and How Does It Work?

热门文章

  1. quagga/zebra - 交叉编译(cross)和本地编译(native)
  2. Axure rp8 注册码,亲测可以用! 可用给个赞呗!!
  3. 【2019沈阳网络赛】G、Special necklace——自闭的物理题
  4. Range Module
  5. Git提交代码的流程——新手适用
  6. WePY框架 input,checkbox-group,radio-group等change 一般处理方法
  7. Nginx 简介与安装
  8. 前端学习(3)-CSS
  9. qq,新浪分享
  10. Failed RMAN Catalog Upgrade from 11.2.0.2 to 12.1.0.2 ( ORA-02296 RMAN-06004 )