Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.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
Django render_to_字符串不呈现javascript_Javascript_Html_Django - Fatal编程技术网

Django render_to_字符串不呈现javascript

Django render_to_字符串不呈现javascript,javascript,html,django,Javascript,Html,Django,我正在从事一个Django项目,在该项目中,我使用render_to_string从后端预呈现HTML模板,然后将它们作为对ajax调用的响应发送到前端 rendered_html.append( [render_to_string("webapp/popup.html", context=shop_context), location['Logo'], location['LONG'], location['

我正在从事一个Django项目,在该项目中,我使用render_to_string从后端预呈现HTML模板,然后将它们作为对ajax调用的响应发送到前端

        rendered_html.append(
            [render_to_string("webapp/popup.html", context=shop_context), location['Logo'], location['LONG'],
             location['LAT'], location['id']])

    return JsonResponse({"rendered_html": rendered_html})
我用javascript将这个呈现的html附加到前端。HTML代码和Django上下文变量工作正常,但文件中的javascript根本不工作。 如果我从开发人员的控制台看到elements部分,我可以看到包含javascript,但它不起作用,即使是一个小的console.log也不起作用

这有解决办法吗?还是我做错了什么?任何帮助都将不胜感激。

面临同样的问题。 为了解决所描述的问题,我将js代码放在一个单独的js文件中,在html中,我在脚本标记中指明了它的路径。 然后,当我得到(视图中的render_to_string)返回的代码行时,我使用正则表达式搜索脚本标记,并加载它们在src中编写的文件

模板

1路:

查看

如果你还有其他问题,我很乐意回答。
我还想看看您是否找到了解决此问题的其他方法。

这是否回答了您的问题@阿卜杜勒·阿齐兹巴卡特:不,不是。这是一个在现有Js中导入Js的解决方案。我需要在后端预呈现html文件,javascript不会呈现。你说:“我可以看到javascript包含在内,但它不工作”,这当然意味着javascript被呈现了。这个问题有很多与您的用例类似的答案。此外,您的问题是不可再现的。您没有提供足够的信息来再现您的问题,请参阅如何编写一份报告。
$.ajax({
    type: "GET",
    url: '/get_html/',
    data: {
       
    },
    success: function(data) {
        const content = document.querySelector('.main__content.inner');
        content.innerHTML = data['html'];
           
        const scripts = data['html'].match(/<script (.*?)<\/script>/g)
        
        scripts.map((script) => { 
            script = script.replace('"><\/script>', '').replace('<script src="/', '');
                console.log(script)
                loadJS(script);
            })
        },
    });


function loadJS(file) {
    const content = document.querySelector('.main__content.inner');
    const jsElm = document.createElement("script");
    jsElm.src = file;
    content.appendChild(jsElm);
}
$.ajax({
    type: "GET",
    url: '/get_html/',
    data: {
        },
    success: function(data) {
        $(".main__content.inner").html(data['html']);
            
       },
    failure: function(data) { 
        console.log('Get html error');
       }
    });
class GetHtmlView(View):
    def get(self, request):
        if request.is_ajax():
            html = render_to_string('your html path')
            return JsonResponse({'html': html})