栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Django表单中,如何将字段设置为只读(或禁用)以便无法对其进行编辑?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Django表单中,如何将字段设置为只读(或禁用)以便无法对其进行编辑?

如该答案所指出,Django 1.9添加了Field.disabled属性:

禁用的布尔参数设置为True时,将使用禁用的HTML属性禁用表单字段,以使用户无法对其进行编辑。即使用户篡改了提交给服务器的字段的值,也将忽略该字段,而使用表单的初始数据中的值。

使用Django 1.8及更早版本,要禁用小部件上的输入并防止恶意POST黑客入侵,除了readonly在form字段上设置属性外,还必须清除输入内容:

class ItemForm(ModelForm):    def __init__(self, *args, **kwargs):        super(ItemForm, self).__init__(*args, **kwargs)        instance = getattr(self, 'instance', None)        if instance and instance.pk: self.fields['sku'].widget.attrs['readonly'] = True    def clean_sku(self):        instance = getattr(self, 'instance', None)        if instance and instance.pk: return instance.sku        else: return self.cleaned_data['sku']

或者,

if instance and instance.pk
用另一个条件替换你正在编辑的条件。你也可以
disabled
在输入字段中设置属性,而不是
readonly

clean_sku
函数将确保该
readonly
值不会被覆盖POST。

否则,没有内置的

Django
表单字段会在拒绝绑定的输入数据时呈现值。如果这是你想要的,则应该创建一个单独
ModelForm
的字段,该字段将不可编辑的字段排除在外,然后将它们打印在模板中。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/369602.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号