Django Form设置文本框为readonly操作


Posted in Python onJuly 03, 2020

用Django开发网站的时候,前端页面内的文本框总是不能被设置为只读,找了一些资料发现可以在form class里面进行设置。

方法一:

首先在自己创建的form.py文件中创建一个my_info_form 类:

** In form.py file **

""" 1. 利用Django form创建自己需要的表单 """
class my_info_form(forms.Form):
 user_id = forms.IntegerField()
 user_name = forms.CharField(max_length=254)
 email = forms.EmailField()

""" 上面的这一小段代码就可以在页面上显示出一个表格, 但是表格里面的文本框IntegerField, CharField, EmailField都处于可编辑状态。 
大多数情况下我们不想要用户可以随意更改页面展示的内容,所以需要对这些文本框进行设置来改变可编辑状态。
代码如下: """

 def __init__(self, *args, **kwargs):
 super(forms.Form, self).__init__(*args,**kwargs)
 self.fields['user_id'].widget.attrs['readonly'] = True
 self.fields['user_name'].widget.attrs['readonly'] = True
 self.fields['email'].widget.attrs['readonly'] = True

""" 编写__init__()方法,
首先, 要调用super(forms.Form, self).__init__(*args,**kwargs), 注意这里的__init__()方法里没有self。*args会传递要展示的信息, **kwargs会传递改变文本框格式的信息。 如果不调用super方法, 会报no fields 错误。

第二, 更改文本框编辑状态:

self.fields['user_id'].widget.attrs['readonly'] = True
self.fields['user_name'].widget.attrs['readonly'] = True
self.fields['email'].widget.attrs['readonly'] = True

第三, 试着运行一下, 你会发现文本框已经不能进行编辑了!
"""

方法二:

""" 
在创建文本框的时候实用Django的widget 设置文本框的属性为 readonly
"""
class my_info_form(forms.Form):
 user_id = forms.IntegerField(widget=forms.TextInput(attrs={'readonly': 'readonly'}))
 user_name = forms.CharField(widget=forms.TextInput(attrs={'readonly': 'readonly'}))
 email = forms.EmailField(widget=forms.TextInput(attrs={'readonly': 'readonly'}))

补充知识:将input标签设置为不可编辑状态的三种方法

一:disabled

disabled 属性规定应该禁用 input 元素,被禁用的 input 元素,不可编辑,不可复制,不可选择,不能接收焦点,后台也不会接收到传值。设置后文字的颜色会变成灰色。disabled 属性无法与 <input type="hidden"> 一起使用。

示例:

<input type="text" disabled="disabled" />

二:readonly

readonly 属性规定输入字段为只读可复制,但是,用户可以使用Tab键切换到该字段,可选择,可以接收焦点,还可以选中或拷贝其文本。后台会接收到传值. readonly 属性可以防止用户对值进行修改。readonly 属性可与 <input type="text"> 或 <input type="password"> 配合使用。

示例:

<input type="text" readonly="readonly">

三:readonly unselectable="on"

readonly unselectable="on" 该属性跟disable类似,input 元素,不可编辑,不可复制,不可选择,不能接收焦点,设置后文字的颜色也会变成灰色,但是后台可以接收到传值。

示例:

<input type="text" readonly unselectable="on" >

以上这篇Django Form设置文本框为readonly操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python判断字符串是否包含子字符串的方法
Mar 24 Python
TensorFlow损失函数专题详解
Apr 26 Python
Python 实现两个列表里元素对应相乘的方法
Nov 14 Python
对python xlrd读取datetime类型数据的方法详解
Dec 26 Python
python队列Queue的详解
May 10 Python
Python3enumrate和range对比及示例详解
Jul 13 Python
Pytorch 抽取vgg各层并进行定制化处理的方法
Aug 20 Python
python线程中的同步问题及解决方法
Aug 29 Python
Python实现点云投影到平面显示
Jan 18 Python
python扫描线填充算法详解
Feb 19 Python
pandas使用函数批量处理数据(map、apply、applymap)
Nov 27 Python
Python初识逻辑与if语句及用法大全
Aug 07 Python
完美解决TensorFlow和Keras大数据量内存溢出的问题
Jul 03 #Python
Keras 在fit_generator训练方式中加入图像random_crop操作
Jul 03 #Python
keras的三种模型实现与区别说明
Jul 03 #Python
Keras中 ImageDataGenerator函数的参数用法
Jul 03 #Python
python程序如何进行保存
Jul 03 #Python
keras的ImageDataGenerator和flow()的用法说明
Jul 03 #Python
python如何安装下载后的模块
Jul 03 #Python
You might like
在普通HTTP上安全地传输密码
2007/07/21 PHP
JavaScript 学习笔记 Black.Caffeine 09.11.28
2009/11/30 Javascript
js 数据类型转换总结笔记
2011/01/17 Javascript
jquery实现加载等待效果示例
2013/09/25 Javascript
js实现checkbox全选和反选示例
2014/05/01 Javascript
用javascript关闭本窗口技巧小结
2014/09/05 Javascript
基于javascript的COOkie的操作实现只能点一次
2014/12/26 Javascript
jQuery检测鼠标左键和右键点击的方法
2015/03/17 Javascript
轻松实现javascript数据双向绑定
2015/11/11 Javascript
javascript类型系统——日期Date对象全面了解
2016/07/13 Javascript
简单模拟node.js中require的加载机制
2016/10/27 Javascript
js实现兼容PC端和移动端滑块拖动选择数字效果
2017/02/16 Javascript
vue项目中使用tinymce编辑器的步骤详解
2018/09/11 Javascript
Vue函数式组件-你值得拥有
2019/05/09 Javascript
Vue的click事件防抖和节流处理详解
2019/11/13 Javascript
微信小程序pinker组件使用实现自动相减日期
2020/05/07 Javascript
Python循环语句中else的用法总结
2016/09/11 Python
Python实现自动发送邮件功能
2021/03/02 Python
书单|人生苦短,你还不用python!
2017/12/29 Python
Python实现爬虫抓取与读写、追加到excel文件操作示例
2018/06/27 Python
详解windows python3.7安装numpy问题的解决方法
2018/08/13 Python
Python中@property的理解和使用示例
2019/06/11 Python
html5指南-1.html5全局属性(html5 global attributes)深入理解
2013/01/07 HTML / CSS
HTML5之SVG 2D入门8—文档结构及相关元素总结
2013/01/30 HTML / CSS
世界上最好的旅行夹克:BauBax
2018/12/23 全球购物
俄罗斯鲜花递送:AMF
2020/04/24 全球购物
Linux管理员面试题 Linux admin interview questions
2014/11/01 面试题
学生就业推荐信
2013/11/13 职场文书
《蒙娜丽莎之约》教学反思
2014/02/27 职场文书
陈胜吴广起义口号
2014/06/20 职场文书
2014年文秘工作总结
2014/11/25 职场文书
山楂树之恋观后感
2015/06/11 职场文书
早上好问候语大全
2015/11/10 职场文书
Python中使用subprocess库创建附加进程
2021/05/11 Python
Spring Boot 整合 Apache Dubbo的示例代码
2021/07/04 Java/Android
Hive导入csv文件示例
2022/06/25 数据库