3

我正在使用评论系统,现在,我想重新编写来自 url 评论的段并附加一个符号 #,我想将页面部分移动到评论列表中,精确到最后一个评论用户<a name=#{{comment.id}}?> username </a>

发表评论时,我使用 next 重定向用户:

{% get_comment_form for object as form %}
<form action="{% comment_form_target %}" method="POST">
  {{ form }}
  <input type="hidden" name="next" value="{{ object.get_absolute_url }}" />
  <input type="submit" name="preview" class="submit-post" value="Preview"></td>  
</form>

但是在 Django Doc 中,不要对 rewrite 或customizer 评论重定向/ url 只字不提

任何的想法?

谢谢

4

1 回答 1

5

我只是偶然发现了这一点丑陋。阅读源代码后,我没有看到任何覆盖此行为的好方法。默认情况下,您将被重定向到模板{{ next }}变量中的 URL,并且 Django 将 a 附加?c=1到 URL 中,其中1是注释的 ID。我希望这样可以#c1让用户从页面跳转到他们刚刚发布的评论。我做了一点“猴子补丁”,如下所示:

from django.contrib.comments.views import utils
from django.core import urlresolvers
from django.http import HttpResponseRedirect

def next_redirect(data, default, default_view, **get_kwargs):
    next = data.get("next", default)
    if next is None:
        next = urlresolvers.reverse(default_view)
    if get_kwargs:
        next += '#c%d' % (get_kwargs['c'],)
    return HttpResponseRedirect(next)

# Monkey patch
utils.next_redirect = next_redirect
于 2009-12-22T06:25:59.180 回答