3

コメントシステムを使用しているので、URLコメントからセグメントを書き直して、記号#を追加します。ページセクションをコメントリストの最後のコメントユーザーに正確に移動します。<a name=#{{comment.id}}?> username </a>

コメントが投稿されたときにusenをリダイレクトするために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では、コメントのリダイレクト/URLの書き換えやカスタマイザーについては何も言わないでください

何か案が?

ありがとう

4

1 に答える 1

5

私はこのちょっとした醜さに出くわしました。ソースコードを読んだ後、この動作をオーバーライドする良い方法が見つかりませんでした。デフォルトでは、テンプレートの{{ next }}変数の URL にリダイレクトされ、Django はコメントの ID である?c=1URL に a を追加します。代わりに、ユーザーが投稿したばかりのコメントにページをジャンプできるよう1にしたかったのです。#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 に答える