pyjade和三元条件失败?

时间:2014-10-27 04:15:19

标签: pug pyjade

我第一次使用PyJade潜入Jade,以便我可以在Flask(和Jinja2)中使用它。到目前为止,一切似乎都在正常工作和编译,虽然我想知道这是否是PyJade翻译中的错误?

我无法在没有错误的情况下将三元语法注入Jade。我已经尝试过各种方式here

div(class=(form.name.errors.length===0 ? 'form-group' : 'form-group has-error'))
div(class="#{form.name.errors.length===0 ? 'form-group' : 'form-group has-error'}")

我的错误总是

TemplateSyntaxError: unexpected '='

TemplateSyntaxError: unexpected char u'?' at 693

我在这里做错了吗?

这是一个简化的代码段

doctype html
html(lang="en")
    head
        title= AwesomePage

    body

        form.form-horizontal(method="POST", action="/timeline")

            div(class="#{form.name.errors.length===0 ? 'form-group' : 'form-group has-error'}")
                div.col-sm-4
                    #{form.name(class="form-control")}

            div(class="col-sm-offset-2 col-sm-4")
                input(type="submit", class="btn btn-default", value="Add Vendor")

1 个答案:

答案 0 :(得分:3)

因为pyjade是用python语法呈现的...你必须遵循python语法,所以这个表达式将在js (form.name.errors.length===0 ? 'form-group' : 'form-group has-error'))中成功但在python中不会成功,因为python中的三元操作a if test else b

所以,解决方案是:

  

div(class =(' form-group' if if not len(form.name.errors)else' form-group has-error')