0

私はこのセットアップを持っています:

urls.py

url(r"^(?P<id1>\d+)/(?P<id2>\d+)/$", "project.views.view", name="view"),

一致する views.py

def view(request, id1, id2):
    if request.method == "POST":
        """a lot of processing"""
        return HttpResponseRedirect(reverse('view', args=(id1, different_id2)))

残念ながら、これが発生すると、実際には次のように解決されます。

return HttpResponseRedirect(reverse('view', args=(id1, id2)))

したがって、投稿が送信されたのと同じページが表示されます。

これは問題ですか?同じビューへのリダイレクトを呼び出しますが、引数が異なります。

(私は元の名前を削除しました -- 紛らわしすぎるでしょう)

4

2 に答える 2

2

いいえ、うまくいくはずです。ID を設定するコードにバグがあるか、ID を返すのHttpResponseRedirectが早すぎる可能性があります。デバッガーにドロップして、何が起こっているかを確認します。

于 2013-02-15T16:52:29.023 に答える
0

助けてくれてありがとう。あなたは正しかった。

問題は、ヘルパー関数(ビューを小さな部分に分割する)があり、ヘルパーのリターンを追加するのを忘れていたことです。

def helper(request, id1, id2):
    """a lot of processing"""
    return HttpResponseRedirect(reverse('view', args=(id1, different_id2)))

def view(request, id1, id2):
    if request.method == "POST":
        helper(request, ...)
    """process get"""

する必要があります

def view(request, id1, id2):
    if request.method == "POST":
        return helper(request, ...)
    """process get"""
于 2013-02-15T17:03:53.973 に答える