Joe*_*oel 5 javascript python django ajax
前几天我为一直在研究的Django应用程序编写了一些AJAX.
我来自Ruby on Rails,所以我没有做过原始JS的方式.
因此,基于Rails的部分内容,我在某种伪代码中有类似于以下内容的内容,请不要赘述:
1)JS函数使用原型的Ajax.Updater('tablediv'是我想要更新Ajaxily的表的id,而url指向正确的django视图)
function updateTable(){
new Ajax.Updater('tablediv',url {params: params....etc
Run Code Online (Sandbox Code Playgroud)
2)django视图获取新数据以填充表:
def ajaxTable
objects = Objects.object.all...
return render_to_response('ajaxtable.html',objects)
Run Code Online (Sandbox Code Playgroud)
3)ajaxtable.html只是一种"部分"的Rails,所以基本上是一张没有<table> </table>... 的表:
<th>{{object.data}}</th>
<td>{{object.moredata}}</td>
Run Code Online (Sandbox Code Playgroud)
所以我的实际问题:
这对我来说似乎很苛刻,我厌倦了在线搜索我想要的东西之后把它扔了.
这是它的方式吗?它工作正常,我只是不知道知道,你知道吗?
这有点取决于我想要做什么.Ajax是从谷歌地图到简单的自动完成的各种各样的场景,其复杂性和最佳方法都非常多.
但是,有一些有用的东西你可以帮助.
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 %}
Run Code Online (Sandbox Code Playgroud)
基本上然后说这个页面是/ test /你可以做一个浏览器请求并通过JavaScript获取完整的内容或请求,然后获取内容.有一个博客帖子可以更详细地解释这一点,但我现在找不到它.
2)在视图中
在模板中,我们只是访问模板中的请求对象.在视图中,您可以执行非常类似的操作.
def my_view(request):
if requst.is_ajax():
# handle for Ajax requests
# otherwise handle 'normal' requests
return HttpResponse('Hello world')
Run Code Online (Sandbox Code Playgroud)
上面的方法实际上与您的方法不同,但允许您重复使用视图并更简洁地编写它.我真的不会说你在做什么是错的或者是hacky但你可以写它以使它更简洁并重复使用模板和视图.
比方说,你可以只有一个模板,如果它是一个Ajax请求,它只返回需要更新的部分.在您的情况下,它将是表视图.