首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在django模板中接收上下文数据并在javascript中使用

如何在django模板中接收上下文数据并在javascript中使用
EN

Stack Overflow用户
提问于 2021-03-26 17:57:25
回答 1查看 1.2K关注 0票数 1

我试图在django模板中接收上下文数据,并在javascript中使用它。目前,我收到的数据,但作为一个字符串,它看起来是胡说八道。

我的代码:

代码语言:javascript
代码运行次数:0
运行
复制
{% extends "base.html" %}

{% block content %}
    {% if search_list %}
        <!-- do something -->
    {% endif %}

    <!-- javascript code  -->

    {% block script %}
    <script >
        let data = '{{search_list}}'
        
        console.log(data);
        
    </script>
    {% endblock script %}
   

{% endblock %}

和views.py

代码语言:javascript
代码运行次数:0
运行
复制
from django.shortcuts import render
from .models import search_history


def index(request):
    search_list = search_history.objects.order_by('-query_date')[:10]
    context = {'search_list': search_list}
    return render(request, 'search_history/index.html', context)

如果删除javascript中变量search_list中的引号,它将显示错误。我使用过jsonifysafe标签,它不起作用。如何在这里作为对象获取数据?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-27 18:40:40

以JSON形式返回数据

代码语言:javascript
代码运行次数:0
运行
复制
import json

def index(request):
    search_list = search_history.objects.order_by('-query_date')[:10]
    context = {'search_list': json.dumps(search_list)}
    return render(request, 'search_history/index.html', context)

把它放进js里

代码语言:javascript
代码运行次数:0
运行
复制
let data = JSON.parse("{{ search_list | escapejs }}");

代码语言:javascript
代码运行次数:0
运行
复制
let data = {{ search_list | safe }};

并考虑将所有这些转变成更优雅的方式:

  • ajax请求
  • json响应

然而,发出ajax请求有点复杂,需要手动发送csrf等等,但是您不必在最后的html中呈现大常数json值。

那么,json响应的视图和原始视图应该是这样的:

代码语言:javascript
代码运行次数:0
运行
复制
def index(request):
    return render(request, 'search_history/index.html')

def get_search_list(request):
    search_list = search_history.objects.order_by('-query_date')[:10]
    return JsonResponse({'search_list': search_list})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66822056

复制
相关文章

相似问题

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