【问题标题】:Django DeleteView redirect to variable locationDjango DeleteView 重定向到变量位置
【发布时间】:2013-01-28 15:49:13
【问题描述】:

我希望能够在 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/)。

【问题讨论】:

    标签: python django


    【解决方案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 }} 附加到网址

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多