Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在javascript中使用Django传递的上下文变量?_Javascript_Python_Django - Fatal编程技术网

如何在javascript中使用Django传递的上下文变量?

如何在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中的“上下文”

我在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中的“上下文”dict??
就像在我的$(function(){})中一样

如果javascript代码位于正在呈现的html模板中,则可以以正常方式使用它。否则,在html模板中声明一个全局文件,并从单独的js文件访问该全局文件。

如果javascript代码位于正在呈现的html模板中,则可以以正常方式使用它。否则,在html模板中声明一个全局变量,并从单独的js文件访问该全局变量。

您可以访问html
脚本
标记中的上下文变量

但仍有一些规则适用:

  • 如果上下文变量是字符串,请将上下文变量括在引号中
  • 如果上下文变量是dict或list,则不要使用引号。但是使用
    安全过滤器
  • 例如:

    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
    脚本
    标记内的上下文变量

    不过,有些规则适用:

  • 如果上下文变量是字符串,请将上下文变量括在引号中
  • 如果上下文变量是dict或list,则不要使用引号。但是使用
    安全过滤器
  • 例如:

    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}})吗?