1

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

我无法在没有错误的情况下将三元语法注入 Jade。我已经尝试了这里建议的所有方法。

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")
4

1 回答 1

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 not len(form.name.errors) else 'form-group has-error'))

于 2014-10-28T17:08:47.013 回答