python Flask Triangle中的语法错误

时间:2015-06-26 13:40:41

标签: angularjs flask

由于我想将AngularJS与Flask结合使用,因此我搜索了一个很好的工具来正确处理这些框架,因为Jinja和Angular之间会有问题。我发现Triangle非常酷而且很有效但只是达到了一定程度。这样的东西可以用作例如:

public void progress(int current, int total) {
    if (notificationManager != null && builder != null) {
        builder.setProgress(total, current, false);
        notificationManager.notify(idNotification, builder.build());
    }
}

但另一方面,这不起作用:

<a ng-show="post.link" href="{{post.link|angular}}">
    {{post.title|angular}}
</a>

当我尝试这样做时,我收到以下错误

  

jinja2.exceptions.TemplateSyntaxError

     

TemplateSyntaxError:875

意外查询'$'

我做错了什么,或者框架在这种情况下是否有限?非常感谢帮助。

2 个答案:

答案 0 :(得分:5)

正如错误消息所述,$无法使用var app = angular.module('Application', []); app.config(['$interpolateProvider', function($interpolateProvider) { $interpolateProvider.startSymbol('{a'); $interpolateProvider.endSymbol('a}'); }]);

相反,您需要Jinja as part of a variable

def getActors(item_url):
    response = requests.get(item_url)
    soup = BeautifulSoup(response.content, "lxml")  # or BeautifulSoup(response.content, "html5lib")
    tempActors = []
    try:
        tempActors.append(soup.find(text="Actors:").find_parent("tr").find_all(text=True)[1:])
    except AttributeError:
        tempActors.append("n/a")
    return tempActors
     

为开始和结束符号选择的任何内容都将充当新的分隔符。在这种情况下,您将表达一个变量&gt;使用{a some_variable a}到Angular。

答案 1 :(得分:4)

只需查看角度过滤器代码,看起来引用字符串并应用角度过滤器应该可以正常工作。

<span>
    <a href="#/posts/{{'$index'|angular}}">Comments</a>
</span>

以下是从https://github.com/morgan-del/flask-triangle

复制的角度过滤器代码
def angular_filter(value):
    """
    A filter to tell Jinja2 that a variable is for the AngularJS template
    engine.
    If the variable is undefined, its name will be used in the AngularJS
    template, otherwise, its content will be used.
    """

    if is_undefined(value):
        return '{{{{{}}}}}'.format(value._undefined_name)
    if type(value) is bool:
        value = repr(value).lower()
    return '{{{{{}}}}}'.format(value)