0

Django 1.5c1 (確認ページを含む) で DeleteView CBV を使用できるようにしたいのですが、ユーザーがオブジェクトをクリックした場所にリダイレクトされるようにします。

たとえば、イベントに基づく私のサイトの構造の大まかな概要は次のとおりです。

/events/week/2013/03/   - ListView, shows 3rd week of 2013's Events
/events/month/2013/01/  - ListView, shows January of 2013's Events
/events/year/2013/      - ListView, show 2013's Events
/events/53/             - DetailView, shows a specific Event

これらのイベント リストのいずれかで、それらすべてに表示されるイベントを作成できます。イベントの URL をユーザーがナビゲートしたリスト (例: /events/year/2013/53/) に依存させるのではなく、独立した URL (例: /events/53/) でイベントを提供することを選択しました。 )。

そのコンテキストでは、イベントの DetailView に、ユーザーがナビゲートした ListView にリダイレクトする削除ボタンを配置できるようにしたいと考えています。

私は考えました:

  • 以前の URL を見て、それが URLconf の ListView である場合にセッションに追加するミドルウェア。これにはいくつかの欠点があります。その 1 つは、Event の DetailView をクリックできるすべての可能な場所をホワイトリストに登録する必要があることです。
  • DetailView の削除ボタンで?next={{ request.META.HTTP_REFER }}、DeleteView の URL に追加して削除フォームに追加しますが、リファラーの URL 全体が渡されます (例: /events/53/delete/?next=www.site.com/events/year/ 2013/)。
4

1 に答える 1

1

ミックスインとして次のようなものを試してください:

class RedirectURLView(View):

    def get_success_url(self):
        next_url = self.request.GET.get('next')

        if next_url:
            return next_url
        else:
            return super(RedirectURLView, self).get_success_url()

次に?next={{ request.path }}、URLに追加します

于 2013-01-28T20:34:46.530 に答える