Django Form设置文本框为readonly

1 篇文章 0 订阅
1 篇文章 0 订阅
用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'}))


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值