0

django コメントの奇妙なプロパティに興味がありました。コメント投稿が発生した後 (/comments/post/ で)、django によって ?c="comment_pk" にリダイレクトされます。django のコメント lib から:

"""
Handle the "where should I go next?" part of comment views.

The next value could be a kwarg to the function (``default``), or a
``?next=...`` GET arg, or the URL of a given view (``default_view``). See
the view modules for examples.

Returns an ``HttpResponseRedirect``.
"""
next = data.get("next", default)
if next is None:
    next = urlresolvers.reverse(default_view)
if get_kwargs:
    if '#' in next:
        tmp = next.rsplit('#', 1)
        next = tmp[0]
        anchor = '#' + tmp[1]
    else:
        anchor = ''

    joiner = ('?' in next) and '&' or '?'
    next += joiner + urllib.urlencode(get_kwargs) + anchor
return HttpResponseRedirect(next)

django の作成者がなぜこれを採用することにしたのか、私はただ興味がありました。同じページにリダイレクトするだけで何が問題なのですか? コメント pk 引数は本当に必要ですか? 私の見解ではそうではありません。

また、httpresponse を '' 空の文字列の値に変更しようとすると、 initが2 つのパラメーター エラーを予期しているため、変更できませんでした。この ?c=pk が本当に必要ない場合、どうすればこの自動リダイレクト パラメータを取り除くことができますか?

ありがとう!

4

1 に答える 1

0

私はコメント フレームワークを使用して Facebook スタイルのコメントを作成しており、同じページ (以下のスニペット) にリダイレクトされます。フォームを同じページにリダイレクトする方法に注意してください。

<input type="hidden" name="next" value="/your/redirect/url"/>

{% get_comment_form for update as form %}

                                    <div class="commentForm">

                                      <form action="/comments/post/" method="post">
                                        {% csrf_token %}
                                         <textarea class="commentBox" id="id_comment" rows="10" cols="40" name="comment"></textarea>


                                        <input id="id_name" type="hidden" name="name" value="{{user.username}}" maxlength="50"/>
                                        <input type="hidden" name="email" id="id_email" value="{{user.email}}"/>
                                        <input type="hidden" name="url" id="id_url" value=""/>
                                        <input type="hidden" name="honeypot" id="id_honeypot" value=""/>
                                        <input type="hidden" name="next" value="/your/redirect/url/"/>

                                            {% for hidden in form.hidden_fields %}
                                              {{hidden}}
                                            {% endfor %}

                                        <button class="btn comment-btn" type="submit" name="submit"> Comment</button>


                                    </form>
于 2012-09-12T07:37:15.243 に答える