我有一个应用程序,其中两个不同的视图使用相同的对象/ 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'。但到目前为止我的所有尝试都失败了(似乎函数没有按顺序执行?)
有没有人知道传递正确值的方法?