为 django 评论表单分配唯一 ID

Posted

技术标签:

【中文标题】为 django 评论表单分配唯一 ID【英文标题】:assign unique ID to django comments form 【发布时间】:2011-04-09 02:28:27 【问题描述】:

我正在构建与 facebook、cmets 等类似的墙功能。

我正在使用 django 的 cmets 框架和 jquery 来发布并获得成功,我正在寻找一种方法来提取隐藏的 id_object_pk 的值并将其用作表单 id

您的正常表单以下列方式呈现。

<form action="/comments/post/" method="post" class="comment-form" id="">
    <input type="hidden" name="content_type" value="wall.post" id="id_content_type" />
    <input type="hidden" name="object_pk" value="76" id="id_object_pk" />
    <input type="hidden" name="timestamp" value="1283848690" id="id_timestamp" />
    <input type="hidden" name="security_hash" value="ccf0e2f3cbbd57cb043df3f304a8dd50a74e972b" id="id_security_hash" />

如何访问这些详细信息?

【问题讨论】:

【参考方案1】:

我的 jQuery fu 很弱,所以对这个答案持怀疑态度。可能有更好的方法来做到这一点。

首先,您需要找到带有评论 id 的输入。

var element = $('#id_object_pk');

接下来,提取评论 ID 本身。那就是输入元素的value 属性。

var comment_id = element.attr('value');

最后更新表单的 id 属性并将其设置为comment_id

var form = $('.comment-form');
form.attr('id', comment_id);

【讨论】:

是的,有道理,我会试试看。虽然我知道你可以删除第二行。并使第一个 var element = $('#id_object_pk').val(); 确实有效,但是基于我有多个表单的事实,所有表单 IDS 最终都是相同的,即 77 左右。 那是因为你所有的表单共享相同的样式类。 如果您最初为每个表单使用不同的非空 ID,那么您可以根据需要使用该 ID 来选择和替换【参考方案2】:

通过使用 jQuery 中的 .each 函数来解决这个问题。

$('.comment-form').each(function()
    var element = $(this).find('#id_object_pk').val();
    $(this).attr('id', element);
);

【讨论】:

以上是关于为 django 评论表单分配唯一 ID的主要内容,如果未能解决你的问题,请参考以下文章

django jquery 评论表单发布太多次

如何在django表单上为日期选择器字段分配唯一ID?

Disqus 在设置了唯一 page.url 和 page.id 的所有页面上显示相同的评论

Django多级评论

Django使用Ajax实现页面无刷新评论回复功能

如何在我的 Django 应用程序的“评论”视图中修复此错误?