如何在javascript中使用Django传递的上下文变量?
我在views.py中有一个方法,如下所示:如何在javascript中使用Django传递的上下文变量?,javascript,python,django,Javascript,Python,Django,我在views.py中有一个方法,如下所示: def index(self, request): initial = get_initial() context = {"context" : initial_topics} template = loader.get_template('index.html') return HttpResponse(template.render(context, request)) 如何访问javascript中的“上下文”
def index(self, request):
initial = get_initial()
context = {"context" : initial_topics}
template = loader.get_template('index.html')
return HttpResponse(template.render(context, request))
如何访问javascript中的“上下文”dict??
就像在我的$(function(){})中一样 如果javascript代码位于正在呈现的html模板中,则可以以正常方式使用它。否则,在html模板中声明一个全局文件,并从单独的js文件访问该全局文件。如果javascript代码位于正在呈现的html模板中,则可以以正常方式使用它。否则,在html模板中声明一个全局变量,并从单独的js文件访问该全局变量。您可以访问html
脚本
标记中的上下文变量
但仍有一些规则适用:
安全过滤器
import json
def my_view(...):
my_list = [...]
my_dict = {...}
context = {'my_list': json.dumps(my_list), 'my_dict': json.dumps(my_dict)}
return ...
$(函数(){
var my_str=“{{my_str}}”;
var my_dict={{my_dict|safe};
var my_list={{my_list|safe};
});
从上面的示例中,您可以看到,您可以按原样访问Python dict或列表,而无需转换为json。但它可能会导致一些错误。例如,如果您的dict包含True
和False
关键字,但JS不会理解这些关键字,并且会引发错误。在JS中,等价的关键字是true
和false
。因此,在呈现之前将dict和list转换为json是一种很好的做法
例如:
import json
def my_view(...):
my_list = [...]
my_dict = {...}
context = {'my_list': json.dumps(my_list), 'my_dict': json.dumps(my_dict)}
return ...
var my_list={{my_list|safe};
var my_dict={{my_dict|safe};
您可以访问HTML脚本
标记内的上下文变量
不过,有些规则适用:
安全过滤器
import json
def my_view(...):
my_list = [...]
my_dict = {...}
context = {'my_list': json.dumps(my_list), 'my_dict': json.dumps(my_dict)}
return ...
$(函数(){
var my_str=“{{my_str}}”;
var my_dict={{my_dict|safe};
var my_list={{my_list|safe};
});
从上面的示例中,您可以看到,您可以按原样访问Python dict或列表,而无需转换为json。但它可能会导致一些错误。例如,如果您的dict包含True
和False
关键字,但JS不会理解这些关键字,并且会引发错误。在JS中,等价的关键字是true
和false
。因此,在呈现之前将dict和list转换为json是一种很好的做法
例如:
import json
def my_view(...):
my_list = [...]
my_dict = {...}
context = {'my_list': json.dumps(my_list), 'my_dict': json.dumps(my_dict)}
return ...
var my_list={{my_list|safe};
var my_dict={{my_dict|safe};
如果要插入Javascript,请确保使用escapejs,在更高级的情况下,可能需要使用JSON.parse
var context = "{{ context }}"
如果你仍然有问题,那么尝试
var context = JSON.parse("{{ context|escapejs }}");
parse()方法解析JSON字符串,构造
字符串描述的JavaScript值或对象。可选的
可以提供恢复器功能,以便在设备上执行转换
返回前的结果对象。
如果您想插入Javascript,那么请确保使用escapejs,在更高级的情况下,您可能需要使用JSON.parse
var context = "{{ context }}"
如果你仍然有问题,那么尝试
var context = JSON.parse("{{ context|escapejs }}");
parse()方法解析JSON字符串,构造
字符串描述的JavaScript值或对象。可选的
可以提供恢复器功能,以便在设备上执行转换
返回前的结果对象。
谢谢例如,我正在传递一个dict{“一”:1,“二”:2}。在完成json.dumps之后。在我的javascript端,当我刚刚发出警报({{context}})时,它给出了“{one:1,“two:2}”.Plasegelp@Trickycoder您好。对不起,我的答案有一些错误。我已经修正了它们,编辑了整个答案,并添加了更多的解释。希望这一次对您有所帮助。有关于这方面的文档吗?谢谢。我正在传递一个dict{“一”:1,“二”:2}例如,在我的javascript端执行json.dumps之后,当我刚刚发出警报({{context}})时,它给出了“{one:1,“two:2}”普拉斯先生gelp@Trickycoder您好。对不起,我的答案有一些错误。我已经修复了它们,编辑了整个答案,并添加了更多的解释。希望这一次对您有所帮助。有关于这方面的文档吗?我们可以使用var my_dict=JSON.parse({my_dict | safe}}})吗?我们可以使用var my_dict=JSON.parse({{{my_dict | safe}})吗?