0

我一直在尝试从我的 python 脚本(view.py)中检索一个数组到我的 HTML 页面,它看起来像这样 -

def archive(request):
    posts = BlogPost.objects.all()
    myVal = ["Dog Toys", "Dog Bedding", "Dog Feeding", "Health & Hygiene"]
    t = loader.get_template("archive.html")
    c = Context({'myposts' : simplejson.dumps(myVal)})
    return HttpResponse(c)

我在 test.html 上的 JavaScript 看起来像这样 -

<script>
    var results = '{{myposts}}';
    console.log(results);
</script>

我在这里遇到的问题是我的数组直接打印在 HTML 页面上,这意味着我的页面源只有这个 -

1 : {'myposts': '["Dog Toys", "Dog Bedding", "Dog Feeding", "Health & Hygiene"]'}

我确信有办法克服这个问题,只是不知道该怎么做,我是第一次使用 Python/Django 和 JavaScript。

在此先感谢您的帮助

4

3 回答 3

1

做就是了

from django.utils.safestring import mark_safe
c = Context({'myposts' : mark_safe(myVal))

然后你需要省略引号来获得一个数组:

var results = {{myposts}};
于 2012-08-21T11:01:39.553 回答
1

代替

var results = '{{myposts}}';

var results = '{% for post in myposts %} {{ post }}, {% endfor %}';

您在 html 中生成 javascript。您可以直接将列表传输到模板:

c = Context({'myposts' : myVal})
于 2012-08-21T11:05:36.150 回答
1

接下来我可以添加到 Hellpain 的答案中:

var result = "{{myposts|join:'/'}}".split('/');

因此,首先将 python 列表加入字符串,然后由 javascript 拆分为数组

于 2012-08-21T11:12:08.970 回答