在 django 中使用 dajax

Posted

技术标签:

【中文标题】在 django 中使用 dajax【英文标题】:using dajax in django 【发布时间】:2012-06-07 14:31:08 【问题描述】:

我发布这个问题不是因为我遇到了一些错误,而是因为我想知道应该如何使用 dajax

这是我想做的:

我想在我的主页上添加一些链接(例如书籍、作者),当用户点击它们时,他会获得书籍/作者列表。

这是我正在做的事情:

当用户点击书籍时,我调用了一个 dajax 进程。 ajax.py 内部:

我使用books = Book.objects.all() 获取所有书籍 我有一个template = "% for book in books %"... blah blah blah 我渲染了模板a = Template(template).render(Context(locals())) 我确实将 dajax 分配为一些 div 标签的 innerhtml

这是正确的做事方式吗? 我应该从一些 xyz.html 打开模板然后渲染它,而不是在 ajax.py 中编写模板?还有其他好的、干净的方法来完成类似的任务吗?

【问题讨论】:

【参考方案1】:

我之前从未听说过dajax(但由于最近的提交时间大约为 10 个月,因此该项目似乎已经完全处于非活动状态),所以我将提供与 dajax 没有直接关系的建议。

基本上,您需要做的是显示一个使用 AJAX 检索的列表。使用以下工具非常简单:

jQuery(或其他 JS 框架) JSON

你需要做的是:

    配置您的一个视图,使其返回图书列表 (look here for the documentation) 使用您选择的 JS 框架访问此视图(jQuery.get() 用于 jQUery) 使用您的 JS 框架,通过添加您通过 get 调用检索到的内容来更新页面上的一些 <ul><ol>(并且您可以将其放置在您要显示的某些叠加层中)。

【讨论】:

【参考方案2】:

从专用模板文件加载模板几乎在任何情况下都更干净。一个带有 HTML 的长 python 字符串不是很可读。

当然,您也可以通过add_data(data,callback_function) 发送您的书籍,并编写一个 javascript 回调函数来填充列表,这将是 Dajax 执行 Thomas Orozco 建议的方式。

但从pagination example 渲染模板文件并将其发送到innerHTML 来看是'正确的方式'。

【讨论】:

谢谢。我想我会加载模板而不是使用 python 字符串。另一种方法是 Dajaxice(callback, ..args..)。但这让我的 js 变得丑陋。所以 dajax 似乎是目前最好的。

以上是关于在 django 中使用 dajax的主要内容,如果未能解决你的问题,请参考以下文章

如何从我的 Django 模板中调用 Dajax / Dajaxice 函数

Django AJAX。 dajax 是不是仍然可以或更好地立即迁移到 jQuery(2012 年复兴)?

为啥 Dajaxice 和 Dajax 使用 MEDIAL_URL?

Dajax 示例“乘法机!”不工作。帮助

使用基于类的视图和 ajax 的 Django 应用程序?

dajax成功后如何调用函数?