Python——Django框架(十一)、HTML插件、动态绑定数据

Source

Python——Django框架(十一)

一、HTML插件

1、插件

前面讲的,Form组件的字段,本质上不仅只是有正则表达式,还有HTML插件。比如写了这么一段代码,除了可以验证外,页面上还能显示相对应的框框,这就是引用了插件。

这里可以看下源码:
在这里插入图片描述
可以看到,是带有 select 插件。看看插件的源码:
在这里插入图片描述
这里就能看到插件源码里面,return了前端的代码,中间预留了空位,是准备做字符串格式化的。

2、插件的自定义属性

在这里插入图片描述
前端代码:
在这里插入图片描述
可以看到,后端这么写,能给前端插入一些自定义属性。

3、后端返回前端代码生成前端样式

后端可以 return 前端代码,但是这么直接使用,是不能生成前端样式的,因为Django自带了保护,不让你随便的生成前端样式,但是还是能够实现:
后端代码:
在这里插入图片描述在这里插入图片描述

方式一: safe
在前端使用的时候,加个管道符 | ,后面写 safe ,就能生成( |safe )

方式二:mark_safe

导入模块
在这里插入图片描述
然后看效果:
在这里插入图片描述

4、Django的内置插件

在这里插入图片描述
重点看 TextInput 就行。

5、常用选择插件

在这里插入图片描述

二、动态绑定数据

1、实时更新数据

基于上面的插件,当有特殊的单选或者多选时,数据源能否实时更新?

举个例子:
在这里插入图片描述
然后数据库目前就两条数据,看页面:
在这里插入图片描述
然后数据库加数据:
在这里插入图片描述

这时页面的数据还是两条,让它有三条的办法一个是重新运行,但这明显不现实。

但是可以给我们的类添加一些代码,让它每次刷新页面的时候,能够重新获取数据源:
在这里插入图片描述
这部分代码,主要是每次刷新页面的时候,都重新执行了__init__方法,重新获取一次数据库的数据源,这样就不需要重新运行。当然还能优化一下代码:
在这里插入图片描述
注意:super必须放在 self.fields的上面。super 这一句,会拷贝所有的静态字段,赋值给 self.fields,如果是没赋值之前,是找不到的,会被错。