是否将来自AJAX调用的内容添加到Django上下文变量中

时间:2010-05-06 10:57:34

标签: django django-context

我正在使用JQuery加载函数来加载我的部分页面。我可以在加载它的页面中访问该页面中的变量。 e.g。

  • 页面A使用JQuery加载函数加载B

  • 页面B在上下文中加载并设置一个名为pageB_var的变量,该变量包含一个django对象

  • 然后,页面A可以通过{{pageB_var}}访问此变量,因为它已添加到上下文中

如果不是最好的方法是什么?

由于

3 个答案:

答案 0 :(得分:1)

没有。当你得到B的回应时,页面B的渲染上下文是无关紧要的,无法访问。

以下是发生的事情: 页面A在服务器中呈现。在此期间,其背景存在。当服务器完成呈现它时,它将呈现的页面发送到客户端。客户端Web浏览器然后运行javascript包括你的jquery load()再次调用服务器并告诉它呈现B.此时呈现页面A的进程不再存在,所以对于页面B发送东西到页面A的渲染你必须做时间旅行....

执行此操作的方法是,页面B返回JSON对象,然后使用给予load()的(javascript)回调函数,根据来自B的此JSON响应呈现页面的更改。

答案 1 :(得分:0)

将页面A发送到浏览器后,它主要在内存中修复。您必须在JavaScript中使用DOM函数才能修改它显示的内容。话虽如此,您可以从视图中返回JSON以调用页面B,然后对其进行解码并将其插入到页面A中。

答案 2 :(得分:0)

听起来您正在使用异步请求来更新页面的一部分,接收部分HTML响应并使用此响应替换页面的部分标记。

您发现这显然限制了您更新该部分页面中包含的信息。

考虑提供对您的异步请求的JSON响应,包含您需要的所有信息,然后通过使用JavaScript操作DOM客户端来更新页面任何部分中的必要HTML。将JSON视为此目的的上下文。