gpt4 book ai didi

python - 覆盖 Django 表单字段的名称属性

转载 作者:太空狗 更新时间:2023-10-29 17:00:22 25 4
gpt4 key购买 nike

我构建了一个 Django 表单,可以提交到另一个域(我无法控制)上的页面。我的想法是我有一个样式漂亮、生成整齐的表单,可以很好地适合我自己的网站,并在提交时将用户带到其他地方。

但是,

  • 如果其他表单更改了它的任何字段的名称,我需要更改我的表单中的字段名称,然后在我的应用程序的其他任何地方更改这些名称 - 因为 name 属性耦合到用于该字段的属性的名称。
  • 如果远程表单使用愚​​蠢的名称,那么我的表单对象也必须具有具有愚蠢名称的属性,这会污染我的应用程序代码。
  • 如果这些名字恰好是 reserved words in Python (例如 from),则很难或不可能创建 Django 表单对象表示。

有没有办法在显示字段时指定一个不同的字符串用于“名称”属性?因此,将 HTML 表单与表示它的类解耦。

这需要两个组件:

  1. 覆盖小部件中的名称值
  2. 让表单在绑定(bind)时从 request.POST 中读取这个值

在这种情况下我只需要第 1 步,但第 2 步与解决我上面列出的更一般的问题有关

最佳答案

这是对 API 的一种非常可怕的滥用,但是有一个名为 add_prefix 的表单方法被调用以确定每个字段的 HTML 名称应该是什么,如果任何。您可以覆盖它,以便它在某个地方的字典中查找字段名称并返回您想要的名称 - 不要忘记保留现有的前缀行为:

FIELD_NAME_MAPPING = {
'field1': 'html_field1',
'field2': 'html_field2'
}

class MyForm(forms.ModelForm):
def add_prefix(self, field_name):
# look up field name; return original if not found
field_name = FIELD_NAME_MAPPING.get(field_name, field_name)
return super(MyForm, self).add_prefix(field_name)

关于python - 覆盖 Django 表单字段的名称属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8801910/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com