重定向回上一页 django
Redirect back to previous page django
我正在构建一个 django 应用程序,其中一个组件是某些模型的简单 CRUD。我已经创建了添加、编辑、删除、查看详细信息和列表页面。我已经给出了编辑和删除列表页面上的记录以及查看详细信息页面的按钮。由于列表页和内部详情页的编辑按钮使用相同的视图和模板,成功url可以link返回查看详情页或列表页。我想添加代码,以便如果用户从查看详细信息转到编辑页面,然后在成功时重定向回详细信息页面,但是如果用户从列表页面转到编辑页面,则用户将被重定向到列表页面(也是列表页面有分页,所以用户应该返回到 s/he 页面。
一种方法是将用户来自的 url 存储在他们的会话中,然后在成功时将他们重定向回 url。这个 mixin 可以添加到您的视图中
class RedirectToPreviousMixin:
default_redirect = '/'
def get(self, request, *args, **kwargs):
request.session['previous_page'] = request.META.get('HTTP_REFERER', self.default_redirect)
return super().get(request, *args, **kwargs)
def get_success_url(self):
return self.request.session['previous_page']
然后你可以在你的class基于视图
中子class这个mixin
class MyModelUpdateView(RedirectToPreviousMixin, UpdateView):
model = MyModel
我正在构建一个 django 应用程序,其中一个组件是某些模型的简单 CRUD。我已经创建了添加、编辑、删除、查看详细信息和列表页面。我已经给出了编辑和删除列表页面上的记录以及查看详细信息页面的按钮。由于列表页和内部详情页的编辑按钮使用相同的视图和模板,成功url可以link返回查看详情页或列表页。我想添加代码,以便如果用户从查看详细信息转到编辑页面,然后在成功时重定向回详细信息页面,但是如果用户从列表页面转到编辑页面,则用户将被重定向到列表页面(也是列表页面有分页,所以用户应该返回到 s/he 页面。
一种方法是将用户来自的 url 存储在他们的会话中,然后在成功时将他们重定向回 url。这个 mixin 可以添加到您的视图中
class RedirectToPreviousMixin:
default_redirect = '/'
def get(self, request, *args, **kwargs):
request.session['previous_page'] = request.META.get('HTTP_REFERER', self.default_redirect)
return super().get(request, *args, **kwargs)
def get_success_url(self):
return self.request.session['previous_page']
然后你可以在你的class基于视图
中子class这个mixinclass MyModelUpdateView(RedirectToPreviousMixin, UpdateView):
model = MyModel