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的Django中django-userena组件的简单使用教程
May 30 Python
python函数装饰器用法实例详解
Jun 04 Python
Python3之简单搭建自带服务器的实例讲解
Jun 04 Python
pygame游戏之旅 添加icon和bgm音效的方法
Nov 21 Python
在python中对变量判断是否为None的三种方法总结
Jan 23 Python
Python为何不能用可变对象作为默认参数的值
Jul 01 Python
python函数声明和调用定义及原理详解
Dec 02 Python
使用Django和Postgres进行全文搜索的实例代码
Feb 13 Python
基于python实现操作git过程代码解析
Jul 27 Python
Python3爬虫关于识别检验滑动验证码的实例
Jul 30 Python
详解python metaclass(元类)
Aug 13 Python
Python基于unittest实现测试用例执行
Nov 25 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
星际RPG字典
2020/03/04 星际争霸
re0第二季蕾姆被制作组打入冷宫!艾米莉亚女主扶正,原因唏嘘
2020/04/02 日漫
php5.2时间相差8小时
2007/01/15 PHP
PHP 得到根目录的 __FILE__ 常量
2008/07/23 PHP
PHP中实现获取IP和地理位置类分享
2015/02/10 PHP
PHP实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
Using the TextRange Object
2006/10/14 Javascript
Document 对象的常用方法
2009/07/31 Javascript
jquery easyui combox一些实用的小方法
2013/12/25 Javascript
ff chrome和ie下全局动态定位的异同及全局高度的取法
2014/06/30 Javascript
javascript定义变量时加var与不加var的区别
2014/12/22 Javascript
jquery专业的导航菜单特效代码分享
2015/08/29 Javascript
理解javascript定时器中的setTimeout与setInterval
2016/02/23 Javascript
javascript显示倒计时控制按钮的简单实现
2016/06/07 Javascript
获取JavaScript异步函数的返回值
2016/12/21 Javascript
详解在vue-cli项目中使用mockjs(请求数据删除数据)
2017/10/23 Javascript
原生javascript实现文件异步上传的实例讲解
2017/10/26 Javascript
mockjs,json-server一起搭建前端通用的数据模拟框架教程
2017/12/18 Javascript
解析vue中的$mount
2017/12/21 Javascript
详解swipe使用及竖屏页面滚动方法
2018/06/28 Javascript
vue自定义switch开关组件,实现样式可自行更改
2019/11/01 Javascript
彻底搞懂并解决vue-cli4中图片显示的问题实现
2020/08/31 Javascript
python smtplib模块发送SSL/TLS安全邮件实例
2015/04/08 Python
python中子类继承父类的__init__方法实例
2016/12/15 Python
详解python基础之while循环及if判断
2017/08/24 Python
Python实现的爬虫刷回复功能示例
2018/06/07 Python
Python3.5内置模块之random模块用法实例分析
2019/04/26 Python
Python逐行读取文件内容的方法总结
2020/02/14 Python
python中for in的用法详解
2020/04/17 Python
HTML5上传文件显示进度的实现代码
2012/08/30 HTML / CSS
华润集团网上药店:健一网
2016/09/19 全球购物
CHARLES & KEITH澳大利亚官网:新加坡时尚品牌
2019/01/22 全球购物
介绍一下.net和Java的特点和区别
2012/09/26 面试题
铭立家具面试题
2012/12/06 面试题
工商企业管理专业自荐信范文
2014/04/12 职场文书
52条SQL语句教你性能优化
2021/05/25 MySQL