在 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 年复兴)?