使用Django评论时收到“评论发布不允许(400)”

1 投票
2 回答
1165 浏览
提问于 2025-04-15 12:52

我正在看一本关于Django的书,但遇到了一些问题。书中使用的代码版本是0.96,而我安装的是1.0版本。现在我卡住的地方是关于Django评论功能(django.contrib.comments)。当我提交评论时,系统提示“评论发布不允许(400)原因:缺少content_type或object_pk字段”。我发现Django的文档在这方面有点不够详细,所以希望能得到一些帮助。

评论框显示得很好,但在我提交评论时就出现了上面的错误(或者说是安全警告,实际上是这样的)。

这是我调用评论表单的代码:

{% render_comment_form for bookmarks.sharedbookmark shared_bookmark.id %}

这是我的form.html代码:

{% if user.is_authenticated %}
    <form action="/comments/post/" method="post">
        <p><label>Post a comment:</label><br />
        <textarea name="comment" rows="10" cols="60"></textarea></p>
        <input type="hidden" name="options" value="{{ options }}" />
        <input type="hidden" name="target" value="{{ target }}" />
        <input type="hidden" name="gonzo" value="{{ hash }}" />
        <input type="submit" name="post" value="submit comment" />
    </form>
{% else %}
    <p>Please <a href="/login/">log in</a> to post comments.</p>
{% endif %}

任何帮助都将非常感谢。

这是我请求的视图代码:

def bookmark_page(request, bookmark_id):
    shared_bookmark = get_object_or_404(
        SharedBookmark,
        id=bookmark_id
    )
    variables = RequestContext(request, {
        'shared_bookmark': shared_bookmark
    })
    return render_to_response('bookmark_page.html', variables)

2 个回答

0

Django在0.96到1.0之间经历了非常大的变化,所以你遇到问题也不奇怪。

关于你具体的问题,可以查看这里

不过我建议你找一本更新的书。因为不仅仅是评论功能,Django的很多部分和0.96完全不同,尤其是后台管理系统。如果你在找官方的《Django书》,可以在这里找到针对Django 1.0的版本2的草稿。

0

虽然不是完美的解决办法,但我找到了一种变通的方法。我用了Django自带的form.html,这样就成功绕过了“评论发布不允许(400)”的错误信息,顺利发布了我的评论。这个表单里有一些其他的字段,不过因为我没有在forms.py里定义自己的表单,所以这也算正常吧。总之,我好像找到了解决办法。谢谢你们关注我的问题。

撰写回答