(我正在使用 jquery 和 django)
假设我有一个待办事项列表,每个项目都有一个唯一的主键 (pk)。在模板中,我使用 for 循环列出这些项目,以便每个项目都是可点击的,以在页面的另一部分显示项目详细信息(当然无需重新加载整个页面)。
普遍接受的最佳方法是什么?
我已经尝试了多种“唯一化”每个 div 的方法,以及在 ajax 请求中传递这个 pk 的多种方法。
第 1 部分 - 获取独特的 div:
- 我把 pk 作为每个项目 div 的 id 的后缀。例如 {% for item in todolist %} stuff $('body').on('click',"#item_{{item.pk}}", function(){var id = {{item.pk}}, .ajax 东西 }) {% endfor %}
- 我没有添加 pk 后缀,而是添加了一个名为 data-id 的自定义 html 属性。这允许我使用 .attr("data-id") 从单击的 div 中获取 pk 并从 for 循环中删除 js。
- 我没有添加自定义 html 属性,而是添加了一个隐藏的表单字段。
第 2 部分 - 将 pk 传递给 ajax 请求:
- 在 $.ajax() 正文中,我将 url: id+"/details" 设置为空数据字段。在 Django 中,我从 url 正则表达式定义中获取 id。
- 在 $.ajax() 正文中,我将 url: "/details" 设置为 data: {id:id}。在 Django 中,我使用 request.POST['id'] 从 views.py 中获取 id。
- 在 js 中,我只是提交表单。Django 将 id 作为表单字段获取。
所以......有这么多(可能是坏的)这样做的方法,你会使用哪一种?