【发布时间】:2015-11-26 10:36:08
【问题描述】:
我有一个 Django 清晰的表单:一个带有电子邮件地址、密码字段和提交操作的典型注册表单。
我有一个隐藏字段从我的 urls python 文件中传递给 Django 脆表单,名为“billing_secret”。不同的 URL 的计费秘密是不同的。
目标: 要让条款和条件单选复选框启用/禁用特定计费秘密的提交按钮,因此是 url。
我需要添加两件事。
- 在 Crispy 表单中添加 if 语句,以仅显示某个计费机密的 Radio 复选框。例如,如果计费密码是“apples”show radios 并默认为“no”。如果计费秘密是其他任何内容,请隐藏收音机,默认为是。
这是我目前所拥有的(不起作用)。抱歉,我对 Python 完全陌生。
email = forms.EmailField(label=_("Email"))
password1 = forms.CharField(widget=forms.PasswordInput,label=_("Password"))
billing_secret = forms.CharField()
termsandcond = forms.TypedChoiceField(
label = "Do you agree to the T&C's?",
choices = ((1, "Yes"), (0, "No")),
coerce = lambda x: bool(int(x)),
widget = forms.RadioSelect,
initial = '0',
required = True,
)
def __init__(self, *args, **kwargs):
billing_secret = kwargs.pop('billing_secret', None)
super(RegistrationForm, self).__init__(*args, **kwargs)
self.helper = FormHelper()
self.helper.form_method = 'post'
self.helper.form_action = '.'
self.helper.layout = Layout(
Field('email', placeholder=_("Email")),
Field('password1', placeholder=_("Password")),
Field('billing_secret', value=billing_secret, type="hidden"),
if billing_secret is 'apples':
return InlineRadios('termsandcond'),
else:
return InlineRadios('termsandcond', initial="1", type="hidden"),
Submit("save", _("Get Started"),css_class="pull-right"),
)
- 单选按钮值为“no”时禁用提交按钮,“yes”时启用。
我打算加入这个:
这样,用户在注册时必须同意条款和条件,然后才能提交他们的详细信息,如果在指定的 url 上,账单密码是“apples”。如果它们在不同的 url 上,则单选不存在并且启用了提交按钮。
【问题讨论】:
标签: python django forms django-crispy-forms