ada*_*ish 15 python forms django
我已经构建了一个Django表单,提交到另一个域的页面(我无法控制).我的想法是,我有一个很好的风格,整齐生成的形式,整齐地适合我自己的网站,并在提交时将用户带到其他地方.
然而,
nameattr已耦合到用于该字段的属性的名称领域.from),则很难或不可能创建Django表单对象表示.有没有办法在显示字段时指定用于'name'属性的不同字符串?因此,将HTML表单与表示它的类分离.
这需要两个组件:
在这种情况下我只需要步骤1,但步骤2与更一般地解决上面列出的问题相关
Dan*_*man 29
这是一个非常可怕的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)
Run Code Online (Sandbox Code Playgroud)
我已经实现了一个简单的函数,它覆盖了widget render方法并分配了一个自定义名称:
def namedWidget(input_name, widget=forms.CharField):
if isinstance(widget, type):
widget = widget()
render = widget.render
widget.render = lambda name, value, attrs=None: \
render(input_name, value, attrs)
return widget
Run Code Online (Sandbox Code Playgroud)
用法很简单:
class AliasCreationForm(forms.Form):
merchant_id = forms.CharField(
max_length=30,
widget=namedWidget('PSPID', forms.HiddenInput),
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17005 次 |
| 最近记录: |