热门标签 | 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,通过传入当前对象的主键作为参数,确保用户被重定向到正确的组详情页面。


推荐阅读
  • 本文详细介绍如何结合Django框架和DRF(Django REST Framework)来设计一套有效的全局异常处理系统。这套系统不仅能够妥善处理DRF引发的异常,还能兼容Django自带的admin界面异常处理逻辑。 ... [详细]
  • Django Admin 插件详解与应用
    本文介绍了 Django Admin 的主要功能及其在项目开发中的作用,包括如何通过模型类操作数据库、自定义 Admin 方法以及多种配置选项,旨在帮助开发者快速掌握 Django Admin 的使用技巧。 ... [详细]
  • Node.js 中 GET 和 POST 请求的数据处理
    本文详细介绍了如何在 Node.js 中使用 GET 和 POST 方法来处理客户端发送的数据。通过示例代码展示了如何解析 URL 参数和表单数据,并提供了完整的实现步骤。 ... [详细]
  • 本文将详细介绍NSRunLoop的工作原理,包括其基本概念、消息类型(事件源)、运行模式、生命周期管理以及嵌套运行等关键知识点,帮助开发者更好地理解和应用这一重要技术。 ... [详细]
  • 本文探讨了在渗透测试中信息收集阶段使用的几种端口扫描技术,包括nmap、masscan、socket、telnet及nc等工具的应用与比较。 ... [详细]
  • 深入理解设计模式之观察者模式
    本文详细介绍了观察者模式,这是一种行为设计模式,适用于当对象状态发生变化时,需要通知其他相关对象的场景。文中不仅解释了观察者模式的基本概念,还通过Java代码示例展示了其实现方法。 ... [详细]
  • 尽管PHP是一种强大且灵活的Web开发语言,但开发者在使用过程中常会陷入一些典型的陷阱。本文旨在列出PHP开发中最为常见的10种错误,并提供相应的预防建议。 ... [详细]
  • 日志记录对于软件开发至关重要,特别是在调试和维护阶段。通过日志,开发者能够追踪错误源头并了解系统的运行状态。本文将探讨如何在Django框架中有效配置和使用日志记录功能。 ... [详细]
  • 本文详细介绍了Oracle数据库中审计日志(audit trail)的配置方法及各参数选项的功能,包括如何启用系统范围的审计记录,以及如何将审计数据存储在不同的位置和格式。 ... [详细]
  • Django小实战——在线Web计算器(利用Bootstrap进行前端开发)
    Django小实战——在线Web计算器(利用Bootstrap进行前端开发),Go语言社区,Golang程序员人脉社 ... [详细]
  • Django框架的使用教程mysql数据库[三]
    Django的数据库1.在Django_test下的view.py里面model定义模型fromdjango.dbimportmodels#Createyourmodelshere ... [详细]
  • 必知必会13条importosos.environ.setdefault(DJANGO_SETTINGS_MODULE,orm_practice.settings)impo ... [详细]
  • 本文回顾了作者在求职阿里和腾讯实习生过程中,从最初的迷茫到最后成功获得Offer的心路历程。文中不仅分享了个人的面试经历,还提供了宝贵的面试准备建议和技巧。 ... [详细]
  • 如何在Django框架中实现对象关系映射(ORM)
    本文介绍了Django框架中对象关系映射(ORM)的实现方式,通过ORM,开发者可以通过定义模型类来间接操作数据库表,从而简化数据库操作流程,提高开发效率。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
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社区 版权所有