Django向JavaScript传递数据:示例与解析

0 下载量 77 浏览量 更新于2024-08-31 收藏 88KB PDF 举报
本文主要探讨了Django框架与JavaScript(JS)如何进行交互,并提供了具体的示例代码。在Web开发中,有时我们需要将Django后台的数据传递给前端JS,以便进行进一步处理和显示。通常有两种常见的方式实现这种交互: 1. 页面加载完成后,通过AJAX异步请求获取数据。这种方式适用于页面不刷新的情况,如用户输入或点击事件触发时,动态更新网页内容。在Django中,可以在视图函数中准备数据,然后使用`json.dumps()`将其转换为JSON格式,以便于JS解析。例如: ```python from django.shortcuts import render from django.utils.safestring import mark_safe def home(request): list_data = ['自强学堂', '渲染Json到模板'] dict_data = {'site': '自强学堂', 'author': '涂伟忠'} return render(request, 'home.html', { 'List': mark_safe(json.dumps(list_data)), 'Dict': mark_safe(json.dumps(dict_data)), }) ``` 在HTML模板中,可以使用`{{ List|safe }}`和`{{ Dict|safe }}`来插入这些数据,同时使用`safe`过滤器确保Django不会尝试进行HTML转义。 ```html <!DOCTYPE html> <html> <head> <title>欢迎光临自强学堂!</title> <script src="http://apps.bdimg.com/libs/jquery/1.10.2/jquery.min.js"></script> </head> <body> <div id="list">{{ List|safe }}</div> <div id='dict'>{{ Dict|safe }}</div> <script type="text/javascript"> var list = JSON.parse(document.getElementById('list').innerHTML); // 对list进行进一步处理... var dict = JSON.parse(document.getElementById('dict').innerHTML); // 对dict进行进一步处理... </script> </body> </html> ``` 2. 直接在视图函数中渲染包含数据的HTML。这种方式适用于一次性渲染所有内容,无需额外请求。同样,需要将Django后台的数据转换为JSON格式,并在HTML模板中使用`safe`过滤器。 这两种方法各有适用场景,第一种方法更灵活,可以实现动态更新,而第二种方法则更适合数据一次性加载的情况。无论哪种方式,确保Django和JS之间的数据交互安全且有效是至关重要的。在处理用户输入时,一定要注意防止XSS攻击,正确使用`json.dumps()`和`safe`过滤器可以降低这种风险。