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 相关文章推荐
MySQL最常见的操作语句小结
May 07 Python
深入解析Python中的__builtins__内建对象
Jun 21 Python
简单谈谈Python中函数的可变参数
Sep 02 Python
python实现闹钟定时播放音乐功能
Jan 25 Python
Python 获取 datax 执行结果保存到数据库的方法
Jul 11 Python
详解如何用TensorFlow训练和识别/分类自定义图片
Aug 05 Python
python被修饰的函数消失问题解决(基于wraps函数)
Nov 04 Python
Django用数据库表反向生成models类知识点详解
Mar 25 Python
Django中文件上传和文件访问微项目的方法
Apr 27 Python
python使用建议技巧分享(三)
Aug 18 Python
python 爬虫爬取京东ps4售卖情况
Dec 18 Python
使用Pytorch训练two-head网络的操作
May 28 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
php学习之 认清变量的作用范围
2010/01/26 PHP
PHPwind整合最土系统用户同步登录实现方法
2010/12/08 PHP
WordPress开发中自定义菜单的相关PHP函数使用简介
2016/01/05 PHP
PHP无限极分类函数的实现方法详解
2017/04/15 PHP
firefox下jQuery UI Autocomplete 1.8.*中文输入修正方法
2012/09/19 Javascript
js实现宇宙星空背景效果的方法
2015/03/03 Javascript
AngularJS监听路由的变化示例代码
2016/09/23 Javascript
JS中showModalDialog关闭子窗口刷新主窗口用法详解
2017/03/25 Javascript
浅谈js中的this问题
2017/08/31 Javascript
Nodejs连接mysql并实现增、删、改、查操作的方法详解
2018/01/04 NodeJs
jQuery的Ajax接收java返回数据方法
2018/08/11 jQuery
JS实现数组去重及数组内对象去重功能示例
2019/02/02 Javascript
详解超简单的react服务器渲染(ssr)入坑指南
2019/02/28 Javascript
vue axios封装及API统一管理的方法
2019/04/18 Javascript
微信小程序开发之左右分栏效果的实例代码
2019/05/20 Javascript
关于微信小程序获取小程序码并接受buffer流保存为图片的方法
2019/06/07 Javascript
jQuery zTree树插件的使用教程
2019/08/16 jQuery
tensorflow创建变量以及根据名称查找变量
2018/03/10 Python
解决python删除文件的权限错误问题
2018/04/24 Python
[原创]Python入门教程1. 基本运算【四则运算、变量、math模块等】
2018/10/28 Python
python中实现控制小数点位数的方法
2019/01/24 Python
python接口自动化(十六)--参数关联接口后传(详解)
2019/04/16 Python
在Tensorflow中实现梯度下降法更新参数值
2020/01/23 Python
Django实现内容缓存实例方法
2020/06/30 Python
基于tensorflow for循环 while循环案例
2020/06/30 Python
Python绘制数码晶体管日期
2021/02/19 Python
北美Newegg打造的全球尖货海购平台:tt海购
2018/09/28 全球购物
乐高奥地利官方商店:LEGO Shop AT
2019/07/16 全球购物
.net软件工程师面试题
2015/03/31 面试题
美丽乡村建设实施方案
2014/03/23 职场文书
数字化校园建设方案
2014/05/03 职场文书
食品安全汇报材料
2014/08/18 职场文书
教师批评与自我批评(群众路线)
2014/10/15 职场文书
2015年公务员试用期工作总结
2015/05/28 职场文书
曾国藩励志经典名言37句,蕴含哲理
2019/10/14 职场文书
“鬼灭之刃”热度不减,其成功背后的原因是什么?
2022/03/22 日漫