所以,我使用django.contrib.comments。我已经安装就OK了,但不是笨重的默认注释的形式,我想使用自定义表单模板,只是显示一个文本并提交按钮。

这样做的理由是,用户看到的只是形式,如果他们领域已经验证,我想要保持表和自动拿起自己的用户名等。

我已经实现了一个自定义窗体,但当我尝试提交它正在一个错误。

下面就是我在我与评论表单的页面模板(条目从视图中传递的对象):

{% load comments %}
{% render_comment_form for entry %}

这是我的HTML中/templates/comments/form.html:

{% if user.is_authenticated %}
    <p>Submit a comment:</p>
    <form action="/comments/post/" method="post">
    <textarea name="comment" id="id_comment" rows="2" style="width: 90%;"></textarea>
            <input type="hidden" name="options" value="{{ options }}" />
            <input type="hidden" name="target" value="{{ target }}" />
            <input type="hidden" name="gonzo" value="{{ hash }}" />
            <input type="hidden" name="next" value="{{ entry.get_absolute_url }}" /> 
             <span style="float:right;"><input type="submit" name="post" value="Add"></span>
    </form>
    {% else %}
        <p>Please <a href="/login/">log in</a> to post a comment.</p>
    {% endif %}

它呈现好的开始,但是当我尝试提交评论的形式,我得到以下的Django错误:

Comment post not allowed (400)
Why:    Missing content_type or object_pk field.

谁能帮助?

有帮助吗?

解决方案 2

通过从 Theju的应用解决了这一问题 - 特别是,见约书亚Works的评论对第2部分

其他提示

注释模型使用一个通用的外键映射到针对有人评论说,如博客条目的对象。这些要求包括在标准注释形式隐藏字段。

从django.contrib.comments.models

...
class CommentSecurityForm(forms.Form):
    """
    Handles the security aspects (anti-spoofing) for comment forms.
    """
    content_type  = forms.CharField(widget=forms.HiddenInput)
    object_pk     = forms.CharField(widget=forms.HiddenInput)
...

如果你没有改变窗体类,并只希望更改HTML模板,那么你可以通过在所有的隐藏字段添加一个for循环包括这些领域。

{% for hidden in form.hidden_fields %}
    {{ hidden }}
{% endfor %}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top