2017-05-25 143 views
0

我非常非常新的jQuery和Ajax和现在,我已经建立了一个Django的论坛,应用,从而在主屏幕上,左侧显示forumposts列表,右侧是空白。因为我是AJAX新手,我已经构建了我的django应用程序,每当我点击左侧显示的任何论坛帖子时,它都会将我重定向到显示该帖子内容的详细信息页面。但是,我想通过使用AJAX来改善用户体验,因此无论何时单击左侧的任何论坛帖,右侧的空白区都会更新并显示该特定帖子的内容。Django的Ajax的GET请求

但我不是很清楚如何开始,因为我是新来的jQuery/AJAX。有人能帮助我吗?谢谢!

回答

0

因此,假设你想使这个服务器上(这是最简单的解释),这是相当简单的。

给你的右边栏的id这样你就可以用jQuery引用它像$("#the-id-here");

使用$.get(),你可以做一个Ajax请求到服务器。您需要发送数据以查看您点击的元素,以便django知道返回的结果。实践中,请确保您可以创建一个简单的django视图,您可以使用$.get进行查询,并查看是否可以返回响应。对于AJAX,您很可能需要django.http.HttpResponsedjango.http.JsonResponse

一旦你有你的终点设置和您确认,您可以用AJAX访问它,你需要返回一些HTML。在您的项目中创建一个HTML模板。对于没有呈现完整页面的AJAX请求,我喜欢在我的模板目录中创建一个名为components/partials/的子文件夹。你不必,但它有助于保持组织。

对于呈现模板AJAX方法,我喜欢用render_to_string。这给了我一些自由,我想如何让响应被格式化。例如,如果我想返回一些JSON其中包括HTML以及一些元数据,我可以这样做:

return JsonResponse({ 
    "html": render_to_string("my_template.html", {"data": "abc"}), 
    "status": "ok" 
}) 

早在JavaScript中,你让你的后Ajax调用你就会有一个成功的回调函数。在回调,你会想$("#your-element").html(/* response here */)

所以更新容器的HTML总结

  1. 创建与一个ID的HTML的容器,你可以选择iwth jQuery的
  2. 创建Django的视图,并验证你可以做一个AJAX调用它
  3. 创建模板要呈现并送回
  4. 使用render_to_string和渲染模板如果您需要对响应进行更多控制。
  5. 在您的AJAX成功回调中,使用响应来填充呈现模板的容器。
+0

HI!非常感谢你的演练 - 尽管我仍然坚持ajax部分。在ajax函数下,有一个url:blahblahblah,我的url是一个django动态url,它需要几个PK(教室中的pk,属于教室的论坛中的pk2和中校中的pk3属于论坛)。如果我使用动态网址(即{%url“教室:论坛:详细信息”pk pk2 post.pk%}),这会导致错误,因为pks未在脚本中加载。 – Yudi

+0

@Yudi关键是在你的模板中定义任何动态变量。在加载外部js文件之前,创建一个'