django使用ajax和更新部分

时间:2017-08-01 18:40:05

标签: javascript jquery python ajax django

我是django的新手,我试图设计一个网页,其中项目部分将包含所有项目,在同一页面上将有模块部分和在该模块部分下将有提交。 现在,我想要的是当用户点击某个项目时,模块部分应该使用该项目下的模块进行更新。我能做到这一点。 (Here是您需要引用的所有内容,您可能需要跳转到Feed应用程序) 但问题是,我在我的ajax中使用它来更新模块部分。

$('#module_section').html(data);

现在index.html不知道我的模块部分中的show details按钮(因为它是从detail.html检索的,我的detail.html有show details按钮,它将显示在该模块下完成的提交)当我在index.html页面的模块部分按下show details按钮时,显然没有任何反应。 我需要一个javascript / ajax,它可以做一个查询,比如“select * from module where project_id ='some_id'”(不确定语法),然后相应地更新我的模块部分,以便当有人点击显示详细信息时在模块部分,他将能够看到在该模块下完成的提交。

任何建议都将受到高度赞赏,< 3提前。

1 个答案:

答案 0 :(得分:1)

在单独的模板中创建html模块。假设你有“index.html”和“details.html”。假设这两个都有一个显示提交的模块(称之为“提交模块”)。

  • 创建一个包含模块的单独html模板。称之为“module_commit.html”。
  • 然后将单独的javascript文件链接到包含所有包含它的javascript的文件。
  • 现在为此模块创建服务器端api。这包括返回数据并为模块执行操作的URL /视图。
  • 连接模块javascript以调用api视图并将数据放入模块中。例如:

假设您希望模块显示提交列表。您将创建一个以JSON格式返回提交列表的视图/ URL。然后创建一个javascript函数,使用ajax调用这个url端点并将数据插入到你的html模块中(我建议使用jquery来处理所有这些因为它比使用vanilla javascript更容易使用)。

  • 现在在模块javascript文件中创建一个init函数,以进行所需的调用以填充模块并设置事件触发器和事件。

  • 现在将模块模板包含在主模板中(index.html,details.html等)。确保在页面加载后在某处调用init函数。

您的代码将具有以下布局:

  api (models/views/urls)

  A   |    (JS calls api to perform actions and retrieve data)
  |   V

  javascript

  |        (Puts results from api into the modules html)
  V

  html

使用此解决方案,您可以在所需的任何模板中包含({% include 'module_commits' %})模块,然后在该模块的javascript中调用init函数,它将在任何页面上运行。只需确保您的html ID不与其他人冲突。