编程语言
首页 > 编程语言> > python – 如果Django松散形式的语句,条件形式布局

python – 如果Django松散形式的语句,条件形式布局

作者:互联网

我有一个Django crispy表单:一个典型的注册表单,包含电子邮件地址,密码字段和提交操作.

我有一个隐藏字段从我的urls python文件传递到Django crispy表单,名为’billing_secret’.不同的URL的计费秘密是不同的.

目的:
要使条款和条件单选复选框启用/禁用特定计费密钥的提交按钮,则为url.

我需要添加两件事.

>在Crispy表单中添加if语句,仅显示特定计费秘密的Radio复选框.例如,如果计费秘密是“apples”,则显示无线电并默认为“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”时禁用提交按钮,当“是”时启用.

我计划包括这个:

http://jsfiddle.net/8YBu5/7/

这样,用户必须在注册时同意T& C,然后才允许提交他们的详细信息,如果在指定的URL上,计费秘密是“苹果”.如果它们位于不同的URL上,则无线电不存在,并且启用了提交按钮.

解决方法:

默认情况下隐藏按钮:

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;'))

标签:python,django,forms,django-crispy-forms
来源: https://codeday.me/bug/20190528/1169267.html