【问题标题】:Handling the HttpResponse from python处理来自 python 的 HttpResponse
【发布时间】:2012-08-21 10:38:06
【问题描述】:

我一直在尝试从我的 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。

提前感谢您的帮助

【问题讨论】:

  • @AnkurGupta - 在某种程度上是的,谢谢,但我的 console.log(results) 打印出一串值 [“Dog Toys”、“Dog Bedding”、“Dog喂养”、“健康与健康”卫生"] 知道为什么它不是数组

标签: javascript python ajax django


【解决方案1】:

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

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

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

【讨论】:

  • 这对我来说非常有效,非常感谢,但我有一个小问题,我的价值观之一看起来像这样“健康与卫生”,我怎样才能让它看起来像“健康与卫生”跨度>
  • 尝试将字符串标记为安全:var result = "{{myposts|join:'/'|safe}}".split('/');
  • 在 view.py 中将字符串标记为安全对我有用:myVal = ["Dog Toys", "Dog Bedding", "Dog Feeding", mark_safe("Health &amp; Hygiene")]。将make_safe 导入为from django.utils.safestring import mark_safe
【解决方案2】:

替换

var results = '{{myposts}}';

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

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

c = Context({'myposts' : myVal})

【讨论】:

    【解决方案3】:

    做事

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

    然后你需要去掉引号来得到一个数组:

    var results = {{myposts}};
    

    【讨论】:

    • 我有一个“Uncaught SyntaxError: Unexpected token &”并指向 [“Dog Toys”、“Dog Bedding”、“Dog Feeding”、“Health & Hygiene"],为什么会在 HTML 页面中转换为特殊字符?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-28
    • 2020-11-15
    • 1970-01-01
    • 2015-06-28
    • 2018-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多