gpt4 book ai didi

javascript - 在 Django 中做 ajax 的更好方法

转载 作者:数据小太阳 更新时间:2023-10-29 05:51:09 26 4
gpt4 key购买 nike

前几天,我为我一直在开发的 Django 应用程序编写了一些 AJAX。

我来自 Ruby on Rails,所以我在原始 JS 方面做的不多。

所以基于 Rails 的部分,我在某种伪代码中类似于以下内容,不要担心细节:

1) 使用原型(prototype)的 Ajax.Updater 的 JS 函数('tablediv' 是我想更新 Ajaxily 的表的 ID,以及指向正确的 django View 的 url)

 function updateTable(){
new Ajax.Updater('tablediv',url {params: params....etc

2) django View 获取新数据以填充表:

 def ajaxTable
objects = Objects.object.all...
return render_to_response('ajaxtable.html',objects)

3) ajaxtable.html 只是一种 Rails 的“部分”,所以基本上是一个没有 <table> 的表格</table> ...:

   <th>{{object.data}}</th>
<td>{{object.moredata}}</td>

所以我的实际问题是:

这对我来说似乎很老套,在厌倦了在线搜索我想要的东西之后,我有点把它放在一起了。

是这样的吗?它工作正常,我只是不够了解,你知道吗?

最佳答案

我觉得这有点取决于你想做什么。 Ajax 是相当广泛的场景,从 Google map 到简单的自动完成,在复杂性和最佳方法方面差异很大。

但是,您可以做一些有用的事情来提供帮助。

1) 模板级别

确保您的 TEMPLATE_CONTEXT_PROCESSORS 设置中有“django.core.context_processors.request”。然后你就可以这样做了;

{% if not request.is_ajax %}
<html>
<head>
...
</head>
<body>
...
{% endif %}
actual content
{% if not request.is_ajax %}
</body>
</html>
{% endif %}

基本上然后说此页面是/test/您可以执行浏览器请求并获取完整内容或通过 JavaScript 请求并仅获取内容。某处有一篇博文对此进行了更详细的解释,但我目前找不到。

2)在 View 中

在模板中我们只是访问模板中的请求对象。在 View 中,您可以做非常相似的事情。

def my_view(request):
if requst.is_ajax():
# handle for Ajax requests

# otherwise handle 'normal' requests
return HttpResponse('Hello world')

上述方法实际上与您所做的并没有什么不同,但允许您重新使用 View 并更简洁地编写它。我不会真的说你在做什么是错误的或 hacky,但你可以编写它以使其更简洁并重新使用模板和 View 。

例如,您可以只有一个模板,如果它是一个 Ajax 请求,则只返回需要更新的部分。在您的情况下,它将是 TableView 。

关于javascript - 在 Django 中做 ajax 的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1491618/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com