您的位置:首页技术文章
文章详情页

Django Form设置文本框为readonly操作

【字号: 日期:2024-09-28 14:20:37浏览:51作者:猪猪

用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’] = Trueself.fields[’user_name’].widget.attrs[’readonly’] = Trueself.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操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持好吧啦网。

标签: Django
相关文章: