热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Django中通过UpdateView更新后跳转至DetailView的方法

本文介绍如何在Django项目中利用UpdateView更新数据后,根据主键(pk)自动重定向至对应的DetailView页面,实现流畅的用户交互体验。

在构建Django应用程序时,我们经常需要创建一个权限管理界面,用于展示和管理用户组的详细信息。为此,我使用了ListView来构建一个组权限页面,不仅展示了Django中的所有组列表,还提供了每个组到其详情页(DetailView)的直接链接,同时提供了修改链接,以便使用UpdateView进行权限的更改。

为了提升用户体验,希望在完成权限更新后,能够直接跳转到刚更新的组的详情页面。这可以通过在UpdateView中覆盖get_success_url方法,并利用当前对象的主键(pk)来实现。

下面是具体的代码实现:

views.py

from django.contrib.auth.mixins import PermissionRequiredMixin
from django.urls import reverse_lazy
from django.views.generic import CreateView, ListView, DetailView, UpdateView
from .models import Group
from .forms import GroupCreateModelForm

class GroupCreation(PermissionRequiredMixin, CreateView):
permission_required = 'auth.add_group'
model = Group
form_class = GroupCreateModelForm
success_url = reverse_lazy('account:group_list')
template_name = 'accounts/groups/group_creation.html'

class GroupsListView(PermissionRequiredMixin, ListView):
permission_required = 'auth.view_group'
allow_empty = True
model = Group
ordering = 'name'
template_name = 'accounts/groups/groups_list.html'
form = GroupCreateModelForm()
extra_cOntext= {'form': form}

class GroupDetailView(PermissionRequiredMixin, DetailView):
permission_required = 'auth.view_group'
model = Group
template_name = 'accounts/groups/group_detail.html'

class GroupUpdateView(PermissionRequiredMixin, UpdateView):
permission_required = 'auth.change_group'
model = Group
fields = ['permissions']
template_name = 'accounts/groups/group_update.html'

def get_success_url(self):
return reverse_lazy('account:group_detail', kwargs={'pk': self.object.pk})

urls.py

from django.urls import path
from .views import *

urlpatterns = [
path('groups/', GroupsListView.as_view(), name='group_list'),
path('groups//', GroupDetailView.as_view(), name='group_detail'),
path('groups//update/', GroupUpdateView.as_view(), name='group_update'),
path('groups/create/', GroupCreation.as_view(), name='group_create'),
]

上述代码中,关键在于GroupUpdateView类中的get_success_url方法。此方法允许我们在更新操作成功后动态地指定重定向URL,通过传入当前对象的主键作为参数,确保用户被重定向到正确的组详情页面。


推荐阅读
author-avatar
ranger
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有