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

Django:如何构建自定义表单小部件?

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

Django:如何构建自定义表单小部件?

你是对的,Django没有提供有关此特定主题的文档。我建议你查看中的内置小部件django.forms.widgets(我将从下面的模块中引用类)。

如果我构建了一个自定义窗口小部件,可以将其等效地用于管理界面或正常形式吗?

管理员会覆盖一些小部件(请参阅参考资料

django.contrib.admin.options.FORMFIELD_FOR_DBFIELD_DEFAULTS)
。你可能可以继承ModelAdmin并更改
formfield_overrides
属性,但是我从来没有做任何事情,ModelAdmin所以我在这里无济于事…

如果我想允许用户编辑项目列表,我应该继承什么小部件?我需要重写/实现小部件的哪些方法?

你的窗口小部件可能与默认窗口小部件没有任何共同之处(Select如果有的话!!)。从中获取子类

Widget
,如果你发现带有内置函数的任何常用模式,则以后仍可以更改它。

实现以下方法:

  • render(self, name, value, attrs=None, renderer=None)

查看

Input.render
一个简单的例子。它还支持HTML中包含的用户定义属性。你可能还想添加“ id”属性,请参见
MultipleHiddenInput.render
如何做。
mark_safe
直接输出HTML时不要忘记使用。如果你有一个相当复杂的小部件,则可以使用模板渲染(示例)。

-

_has_changed(self, initial, data)

可选的。在管理员中用于记录有关更改的消息。

哪种窗口小部件方法负责从用户输入返回到数据模型?

这与小部件无关-Django无法知道早期请求中使用了什么小部件。它只能使用从表单发送的表单(POST)数据。因此,使用field方法

Field.to_python
将输入转换为Python数据类型(
ValidationError
如果输入无效,则可能会引发该输入)。



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

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

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