Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.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
使用djangoajax创建iframe内容,并将\u呈现为\u字符串_Ajax_Django_Iframe_Dynamic_Render To String - Fatal编程技术网

使用djangoajax创建iframe内容,并将\u呈现为\u字符串

使用djangoajax创建iframe内容,并将\u呈现为\u字符串,ajax,django,iframe,dynamic,render-to-string,Ajax,Django,Iframe,Dynamic,Render To String,我正在尝试创建类似于twitter允许网站嵌入推文的可嵌入内容 例如,twitter允许用户复制粘贴存根blockquote和javascript,在运行js时,将blockquote替换为内容的iframe 我也做过类似的事情(我正在使用django) 占位符文本 js脚本然后对django视图方法进行ajax调用,该方法调用render_to_string并为iframe加载所需的HTML。如果返回简单的HTML,那么一切都能正常工作,因为它只需要类似于iframe.get()[0].c

我正在尝试创建类似于twitter允许网站嵌入推文的可嵌入内容

例如,twitter允许用户复制粘贴存根blockquote和javascript,在运行js时,将blockquote替换为内容的iframe

我也做过类似的事情(我正在使用django)


占位符文本

js脚本然后对django视图方法进行ajax调用,该方法调用render_to_string并为iframe加载所需的HTML。如果返回简单的HTML,那么一切都能正常工作,因为它只需要类似于
iframe.get()[0].contentWindow.document.write(content)

但这是我的问题。我要加载的HTML需要DataTables,DataTables应该初始化$(document).ready()中的一个表。 因为这是iframe内容,所以永远不会调用document.ready()(据我所知)。目前,我已经能够通过将javascript放在HTML的最末尾来初始化DataTable,但无法保证在初始化调用完成时HTML会被完全加载

归根结底,问题在于时机。我需要动态生成的iframe内容(通过django模板用ajax加载)在加载到iframe之前执行其javascript


有没有办法强制执行此计时?

为什么不将iframe src设置为视图的url?然后您将拥有一个完整的请求生命周期。您可以显示一个加载程序,直到数据表运行完它的
init()
。您还可以在主视图中调用iframe的视图url,并获取结果html,然后将其传递到上下文。我试图避免使用src属性,因为创建的页面是通过ajax POST调用完成的。换句话说,添加到iframe的html本身并不是一个页面。也许我想把事情复杂化,因为我看到youtube的嵌入链接使用了iframe的src attr,而twitter则没有。
<blockquote class="embedded">
  <p>placeholder text</p>
</blockquote>
<script async src="{% static 'widgets.js' %}" charset="utf-8"></script>