【问题标题】:get the values of a specific key from Django queryset json data and pass them to vueJS从 Django 查询集 json 数据中获取特定键的值并将它们传递给 vueJS
【发布时间】:2021-09-15 22:32:36
【问题描述】:

我使用 Django2 开发了一个 web 应用程序,前端使用 vue。 在视图函数中,我已经将一些 json 数据渲染到前端。 但是在前端,我不确定如何将 Json 数据中特定键的所有值传递给 JavaScript 字典值。 我曾尝试使用 += 添加数据,但在我的情况下未能获取数据。表中未显示数据。只有第一行可以工作

查看.py:

def Browse_and_adopt(request):
query_results_book = Title.objects.all()
query_results_book_json = serializers.serialize('json', query_results_book)
return render(request, 'main.html', {"query_results_book_json": query_results_book_json})

main.html: {{ row.title }} {{ 行.作者 }}

    <script>
          var query_results_book = {{ query_results_book_json|safe}};

    var book_row = {title: query_results_book[0].fields.title, author: query_results_book[0].fields.author };

    for (var i=1; i < query_results_book.length; i += 1){
        book_row += {title: query_results_book[i].fields.title, author: ''};
    }


    const app = new Vue({
        el: '#app',
        data:() => ({
            filter: '',
            rows: [book_row]
        }),
</script>

示例 json:

{author: "Bill Gates", title: "test"}

如何在 vueJS 中传递这个 json 数据中的所有数据?

【问题讨论】:

  • 请添加带有问题的示例 json 数据,以便我可以准确地告诉您问题所在。

标签: javascript django vue.js


【解决方案1】:

因为你有 JSON 对象试试这个。

<div v-for="(item, key) in jsonData" :key="key">
    <p>{{key}} : {{ item }}</p>
</div>

这将为您提供 jsonData 的 keys 和附加到 keyitem 本身。

另外,如果你想在 keys 的基础上加上一些条件,你可以在循环中使用 key 并制定你的逻辑。

如果选择性项目链接到特定键

<div v-for="(item, key) in jsonData" :key="key">
    <div v-if="key === 'title'">
    <p>{{ item }}</p>
    </div>
</div>

如果你想更多地了解与 vuejs 类似的东西,也可以看看这个, Extracting the text from error object (via response) and manipulate or show it in vue template 它将帮助您了解通过 vuejs 对 json 数据的操作。

【讨论】:

  • 对不起,我试过你的方法,但没有用。我必须为json中的所有数据制作一个表格。所以必须使用 rows: [book_row] in vue data
【解决方案2】:

问题是您在query_results_book_json 中返回一个标题列表,然后尝试访问它,就好像它只是其中的一项:

var book = {title: query_results_book_json.title, author: query_results_book_json.author};

您必须遍历该结果才能获得您想要的书,或者更改查询以仅返回您需要的书。

编辑:

您可以添加如下内容:

<script>
    var query_results_book = {{ query_results_book_json|safe}};
    var book = query_results_book[0];
</script>

编辑 2(现在您添加了示例):

为了访问这些字典键,您必须使用 [''] 符号。

例如,要在 javascript 中获取第一本书的标题,您可以这样:

query_results_book[0]['title']

您可以通过记录这样的 for 循环来尝试:

<script>
for (let i = 0; i < query_results_book.length; i++) {  
   console.log(query_results_book[i]['title'])
}
</script>

【讨论】:

  • 如果你正在做类似的事情,你应该考虑在你的视图中添加一个过滤器,并从 Django 而不是前端过滤它。
  • 我想在一行中做一个标题,所以只能在前端过滤
  • for (var i=0; i
  • 试试这个:for (let i = 0; i
  • 尝试了你的方法,但在 for 循环中出现了一些错误:vue.js:597 [Vue 警告]:渲染错误:“TypeError:无法读取未定义的属性 'toString'”
猜你喜欢
  • 2015-02-22
  • 2019-08-11
  • 1970-01-01
  • 2015-03-04
  • 1970-01-01
  • 1970-01-01
  • 2017-07-14
  • 2021-12-06
  • 1970-01-01
相关资源
最近更新 更多