我希望能够在 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。
我考虑过:
- 如果它是我的 URLconf 中的 ListView,它将查看以前的 URL 并将其添加到会话中的中间件。这有几个缺点,其中之一是需要将可以单击 Event 的 DetailView 的每个可能位置列入白名单。
- 在 DetailView 上的删除按钮上,附加
?next={{ request.META.HTTP_REFER }}
到 DeleteView 的 URL 并以某种方式将其添加到删除表单中,但是传递了整个引用者的 URL(例如 /events/53/delete/?next=www.site.com/events/year/ 2013/)。