首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GAE + Javascript推送:多行推送

GAE + Javascript推送:多行推送
EN

Stack Overflow用户
提问于 2011-01-06 21:38:53
回答 2查看 349关注 0票数 7

我在Google App Engine python代码中有这个,

代码语言:javascript
复制
class ABC(db.Model):
  StringA = db.StringProperty()
  StringB = db.StringProperty(multiline=True)

abcs = ABC.all()
template_values = {'abcs': abcs,}
path = os.path.join(os.path.dirname(__file__), 'index.html')
self.response.out.write(template.render(path, template_values))

这是在index.html中,

代码语言:javascript
复制
<script type="text/javascript">
 var string_A = [];
 var string_B = [];

{% for abc in abcs %}
 string_A.push("{{ abc.StringA }}");
 string_B.push("{{ abc.StringB }}");  //This doesn't work?
{% endfor %}
</script>

我的问题是,如何将多行推送到数组??

提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2011-01-12 20:34:57

如果要生成Javascript表达式,则需要小心对字符串进行转义,以便始终获得有效的Javascript表达式,并且不会引入XSS漏洞(如果字符串是由用户提供的)。您可以使用Javascript Django模板筛选器转义addslashes字符串的特殊字符:

代码语言:javascript
复制
string_B.push("{{ abc.StringB|addslashes }}");

另一种解决方案是使用json生成一个安全且正确转义的javascript表达式,其中包含在Javascript代码中需要的所有数据。有关在GAE上使用json的信息,请参阅this question。使用json,您可以编写类似以下内容:

代码语言:javascript
复制
from django.utils import simplejson as json
class ABC(db.Model):
    # [...]
    def as_json(self):
        return json.dumps({'StringA':self.StringA, 'StringB':self.StringB})

在模板中:

代码语言:javascript
复制
<script type="text/javascript">
var abcs = [];
{% for abc in abcs %}
abcs.push({{ abc.as_json }});
{% endfor %}
</script>

这样,您就可以从单个数组中的abc对象中获得所需的所有数据。

票数 1
EN

Stack Overflow用户

发布于 2011-01-10 14:20:44

您使用的是哪种模板库?我想这是自动转义的问题。如果你在GAE上使用Django tempalte,你应该尝试这样做。

代码语言:javascript
复制
<script type="text/javascript">
var string_A = [];
var string_B = [];

{% for abc in abcs %}
string_A.push("{{ abc.StringA }}");
{%autoescape off}
 string_B.push("{{ abc.StringB }}");
{%endautoescape%}
{% endfor %}
</script>

祝好运!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4615462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档