3

私は次の見解を持っています:

def copy_group(request):
    copy = request.GET.get('copy','')

    if copy:
        #do my copy process

    context = {'view':'copy-view'}
    return render(request, 'groups/copy-view.html', context)

これは、次の URL mysite.com/groups/?copy=1 で呼び出されます

問題は、ページを更新すると、プロセスが何度もコピーし続けることです。

ge パラメーターを削除して、コピー後に URL が返されるようにするにはどうすればよいですか: mysite.com/groups/

ビューコードにこれを挿入しようとしました:

request.GET.pop('copy')

しかし、エラーが発生します: この QueryDict インスタンスは不変です

4

2 に答える 2

1

私がそれをよく理解していれば、コピーを完了したら、ページをリダイレクトして、それ以上コピーが作成されないようにする必要があります。次に、次のようにします。

...
if copy:
    the actual copy and then...
    return HttpResponseRedirect(redirect_to='/the-path-without-copy-parameter/')
...

次に、コードを改善できます。

  • コピーを実際のルート パラメータとして追加し、def copy_group(request, copy=None )
  • ハードコーディングする代わりに、redirect_to でパスを生成する
  • トピック外: 何もない場合は機能テストを追加してください:)

ところで、別の URL だけでなく Get パラメータを使用する理由がわかりません??

于 2013-10-01T01:30:18.850 に答える
0

代わりにリダイレクトを行うことになりました。これにより、get パラメータが削除されます。

于 2013-10-16T21:14:32.137 に答える