Django Form设置文本框为readonly操作

 更新时间:2020年07月03日 15:35:36   作者:939397232  
这篇文章主要介绍了Django Form设置文本框为readonly操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

用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操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • matplotlib调整子图间距,调整整体空白的方法

    matplotlib调整子图间距,调整整体空白的方法

    今天小编就为大家分享一篇matplotlib调整子图间距,调整整体空白的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • 最新版 Windows10上安装Python 3.8.5的步骤详解

    最新版 Windows10上安装Python 3.8.5的步骤详解

    这篇文章主要介绍了最新版 Windows10上安装Python 3.8.5的步骤详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • Python scrapy爬取苏州二手房交易数据

    Python scrapy爬取苏州二手房交易数据

    scrapy的第二个实例对比上一个,在数据处理上增加了新的需求,运用了管道文件pipelines.py,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • Pandas之使用drop_duplicates:去除重复项

    Pandas之使用drop_duplicates:去除重复项

    这篇文章主要介绍了Pandas之使用drop_duplicates:去除重复项方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • 一文介绍Python中的正则表达式用法

    一文介绍Python中的正则表达式用法

    正则表达式是一种强大的文本匹配和处理工具,广泛应用于各种编程语言中,在Python中,我们可以使用内置的re模块来处理正则表达式,本文将带您从入门到精通,逐步介绍Python中的正则表达式用法,并提供实例演示
    2023-07-07
  • Python+matplotlib+numpy实现在不同平面的二维条形图

    Python+matplotlib+numpy实现在不同平面的二维条形图

    这篇文章主要介绍了Python+matplotlib+numpy实现在不同平面的二维条形图,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • 一文掌握Python正则表达式

    一文掌握Python正则表达式

    这篇文章主要介绍了Python正则表达式的相关知识,主要包括re模块的使用及正则表达式基础知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • selenium学习教程之定位以及切换frame(iframe)

    selenium学习教程之定位以及切换frame(iframe)

    这篇文章主要给大家介绍了关于selenium学习教程之定位以及切换frame(iframe)的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • Python中利用ItsDangerous快捷实现数据加密

    Python中利用ItsDangerous快捷实现数据加密

    这篇文章主要介绍了Python中利用ItsDangerous快捷实现数据加密,通过使用Python库ItsDangerous,我们就可以高效快捷地完成数据加密/解密的过程,本文结合实例代码给大家讲解的非常详细,需要的朋友可以参考下
    2022-11-11
  • Python脚本制作天气查询实例代码

    Python脚本制作天气查询实例代码

    在本篇文章里小编给大家整理的是一篇关于Python脚本制作天气查询实例代码实例,有兴趣的朋友们可以参考学习下。
    2021-08-08

最新评论