我第一次使用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")
答案 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')