我有一个Django crispy表单:一个典型的注册表单,包含电子邮件地址,密码字段和提交操作。
我有一个隐藏字段从我的urls python文件传递到Django crispy表单,名为'billing_secret'。不同的URL的计费秘密是不同的。
目标: 要使条款和条件单选复选框启用/禁用特定计费密钥的提交按钮,则为url。
我需要添加两件事。
这是我到目前为止(不起作用)。道歉我完全不熟悉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"),
)
我计划包括这个:
这样,用户必须在注册时同意T& C,然后才允许提交他们的详细信息,如果在指定的URL上,则账单密钥为“apples”。如果它们位于不同的URL上,则收音机不存在,并且启用了提交按钮。
答案 0 :(得分:6)
默认隐藏按钮:
Submit("save", _("Get Started"),css_class="pull-right", style='display: none;')
用javascript检查单选按钮,当用户点击“接受”时,只需选择按钮并显示它。
编辑: 对于条件元素:
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':
self.helper.layout.append(InlineRadios('termsandcond'))
else:
self.helper.layout.append(InlineRadios('termsandcond', initial="1", type="hidden"))
self.helper.layout.append(Submit("save", _("Get Started"),css_class="pull-right", style='display: none;'))