【问题标题】:Flask is parsing out AngularJS expressionsFlask 正在解析 AngularJS 表达式
【发布时间】:2014-10-23 22:57:53
【问题描述】:

使用 Python 3.4.1

一切正常,否则。

例如:

<li ng-repeat="thing in things"><a href="#">{{thing}}</a></li>

将创建我期望的许多元素,并且控制台甚至记录我的预期结果......但是当呈现 html 时,表达式被删除并且我遇到了一个空元素列表:

<li ng-repeat="thing in things"><a href="#"></a></li>

我知道这是使用相同花括号表示法的 Flask 的问题。有人知道如何让 AngularJS 表达式以其他方式呈现吗?


都试过了:

jinja_options = Flask.jinja_options.copy()
jinja_options.update(dict(
    block_start_string='<%',
    block_end_string='%>',
    variable_start_string='%%',
    variable_end_string='%%',
    comment_start_string='<#',
    comment_end_string='#>',
))

app = Flask(__name__)
app._static_folder = 'static'

app = Flask(__name__)
app._static_folder = 'static'
app.jinja_options.copy().update(dict(
    block_start_string='<%',
    block_end_string='%>',
    variable_start_string='%%',
    variable_end_string='%%',
    comment_start_string='<#',
    comment_end_string='#>',
))

使用标签

<script type="text/javascript" src="%% url_for('static', filename='js/lib/angular.min.js') %%"></script>

只是按原样呈现它而不解释分隔符。显然会导致一堆 404。


app = Flask(__name__)
app._static_folder = 'static'
app.jinja_options.update(dict(
    variable_start_string='%%',
    variable_end_string='%%'
))

app = Flask(__name__)
app._static_folder = 'static'
app.jinja_options.update(
    variable_start_string='%%',
    variable_end_string='%%'
)

都给TypeError: 'ImmutableDict' objects are immutable

将我的角度表达式更改为{{'{{thing}}'}} 可行,但我会尽快切换到不同的框架,而不必像那样管理我的角度代码。

【问题讨论】:

    标签: javascript python angularjs flask


    【解决方案1】:

    使用jinja_options:

    app = Flask(__name__)
    
    jinja_options = app.jinja_options.copy()
    jinja_options.update(dict(
        block_start_string='<%',
        block_end_string='%>',
        variable_start_string='%%',
        variable_end_string='%%',
        comment_start_string='<#',
        comment_end_string='#>',
    ))
    app.jinja_options = jinja_options
    

    在模板中:

    <li ng-repeat="thing in things"><a href="#">{{thing}}</a></li>
    %% jinja_expression %%
    

    【讨论】:

    • 似乎什么也没做。 &lt;script type="text/javascript" src="%% url_for('static', filename='js/lib/angular.min.js') %%"&gt;&lt;/script&gt; 只是按原样呈现,当然还有 404 的
    • 刚刚更新了解决ImmutableDict问题的答案。
    【解决方案2】:

    jinja 不支持这样的语法吗?

    <li ng-repeat="thing in things"><a href="#">{{{{thing}}}}</a></li>
    

    这至少在 django 中有效,我希望 jinja 也允许以这种方式转义大括号。

    【讨论】:

    • 关闭,找到了。实际上是 {{'{{thing}}'}}
    • 啊,肯定有点不一样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-20
    • 2012-07-08
    • 2010-10-23
    • 2017-07-10
    相关资源
    最近更新 更多