Django - 将变量传递给'get_success_url'

时间:2017-10-13 09:34:41

标签: django django-views

我有一个应用程序,其中两个不同的视图使用相同的对象/ deleteview。

两者都是显示“邀请”模型列表的通用列表视图。一个过滤查询集,其中'Invite.org = user.profile.org',另一个排除它们。

由于视图是如此相似且模型相同,我认为我可以使用单个(通用)deleteview来管理删除邀请。

class InviteDelete(SecCheck, TenantRootedMixin, DeleteView):
    model = Purchases
    menu_id = 'invites'
    template_name = 'tenants/invite_delete.html'

    def get_success_url(self, **kwargs):
        return reverse('invite_list_own', args=[self.request.tenant.slug])

    def form_valid(self, *args, **kwargs):
        from django.contrib import messages
        messages.success(self.request, '{} Invite deleted'.format(self.get_object().name))
        return super(InviteDelete, self).form_valid(*args, **kwargs)

    def get_context_data(self, **kwargs):
        #Make sure that the user if returned to the correct 'tab' in the event of a cancel.
        data = super(InviteDelete, self).get_context_data(**kwargs)
        data['return_page'] = self.request.META.get('HTTP_REFERER')
        return data

“删除”表单有一个确认页面,其中包含“取消”和“确认删除”按钮。很标准的东西。但是,问题是我希望用户在删除后返回上一页。这可以是查看/模板A(Invite.org == user.profile.org)或查看/模板B(Invite.org!= user.profile.org)

我正在尝试使用self.request.META.get(HTTP_REFERER')方法解决问题。 'get_context_data'将'return_page'值设置为模板,而不是使用该值为'cancel'按钮生成正确的url。像这样:

<div class="panel-footer text-right">
    <a href="{{ return_page }}" class="btn btn-default">{% trans "Cancel" %}</a>
    <button type="submit" class="btn btn-primary">{% trans 'Delete' %}</button>
</div>

这很好,但是,我遇到了'get_succes_url'函数的问题。 我尝试使用self.request.META.get('HTTP_REFERER')作为返回值,但由于'get_succes_url'是重定向,因此它只返回delete-confiration-page。

我需要找到一种方法来在访问类时定义“上一页”,然后将该值传递给'get_succes_url'。但到目前为止我的所有尝试都失败了(似乎函数没有按顺序执行?)

有没有人知道传递正确值的方法?

0 个答案:

没有答案
相关问题