使用Django创建非重载动态web应用

0 投票
4 回答
852 浏览
提问于 2025-04-15 12:54

据我了解,当你从一个网页应用发起新的请求时,通常需要重新加载页面才能处理和响应这个请求。

举个例子,如果你想在一个帖子下显示评论,你就得重新加载页面,处理评论,然后再显示出来。不过,我希望能像Facebook那样,添加评论时不需要重新加载整个页面,评论就能直接显示出来。这样做有可能只用Django和Python,而不需要了解Javascript或AJAX吗?

我听说用AJAX可以做到(我不太清楚怎么做),但我在想用Django能不能实现。

谢谢,

4 个回答

1

也许可以用几个iFrame和一些Comet/长轮询?把评论提交放在一个iFrame里(这样整个页面就不会重新加载),然后在长轮询的iFrame里显示结果……

不过这么做其实设计得不太好,你可能不想这样做。用AJAX/JavaScript来处理这种事情会更合适。

我听说用AJAX是可以做到的……但我在想用Django能不能实现。

其实你完全可以同时使用这两者——具体来说,就是在Django的网页应用中使用AJAX。Django提供了你所需要的组织结构和框架(还有一个可以响应AJAX请求的页面),然后在客户端用一些JavaScript来发起AJAX请求,这样你的Django页面就能正确响应了。

我建议你去找一个基础的jQuery教程,这样可以学到足够的基本JavaScript,让你实现这个功能。

3

你肯定想用AJAX。这意味着客户端需要运行一些JavaScript代码。

如果你不想学习JavaScript,可以试试像pyjamas这样的东西。你可以在这里查看它的HttpRequest示例。

不过我总觉得,直接用JavaScript库(比如jQuery)会比把一种语言强行转成另一种语言更容易理解。

8

你想在不使用任何客户端代码(比如JavaScript和Ajax)和不重新加载页面(或者至少不重新加载部分内容)的情况下做到这一点吗?

如果是这个问题,那么很遗憾,答案是你做不到。你要么需要使用客户端代码,要么就得重新加载页面。

想想看,一旦用户获取了页面,页面就不会改变,除非:

  • 用户向服务器请求同一个页面,服务器返回一个更新过的页面。
  • 页面里有一些客户端代码(比如JavaScript),可以更新页面。

撰写回答