首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Django - UpdateView中的动态success_url

Django是一个基于Python的开源Web应用框架,它提供了一套强大且灵活的工具,用于快速开发安全可靠的Web应用程序。在Django中,UpdateView是一个通用视图类,用于处理更新数据库中的数据。

在UpdateView中,success_url是一个属性,用于指定在成功更新数据后要重定向的URL。它可以是一个固定的URL字符串,也可以是一个动态生成的URL。

动态success_url是指根据更新的数据动态生成重定向URL的情况。这在需要根据更新后的数据进行进一步操作或导航的场景中非常有用。

为了实现动态success_url,我们可以重写UpdateView类中的get_success_url()方法。在该方法中,我们可以访问更新后的对象,并根据其属性或关联关系生成动态URL。

以下是一个示例代码,演示了如何在Django的UpdateView中实现动态success_url:

代码语言:python
代码运行次数:0
复制
from django.views.generic.edit import UpdateView
from django.urls import reverse

from .models import YourModel

class YourUpdateView(UpdateView):
    model = YourModel
    fields = ['field1', 'field2']

    def get_success_url(self):
        # 获取更新后的对象
        obj = self.get_object()
        
        # 根据对象属性或关联关系生成动态URL
        dynamic_url = reverse('your_view_name', args=[obj.id])
        
        return dynamic_url

在上述示例中,我们首先导入了UpdateView和reverse函数。然后,我们定义了一个继承自UpdateView的自定义视图类YourUpdateView,并指定了要更新的模型和要显示的字段。

接下来,我们重写了get_success_url()方法。在该方法中,我们通过self.get_object()获取更新后的对象。然后,我们使用reverse函数生成一个动态URL,其中'your_view_name'是要重定向的视图的名称,args=obj.id是要传递给该视图的参数。

最后,我们将生成的动态URL作为get_success_url()方法的返回值,以便在成功更新数据后进行重定向。

推荐的腾讯云相关产品:腾讯云服务器(CVM)和腾讯云数据库(TencentDB)。您可以通过以下链接了解更多关于腾讯云服务器和腾讯云数据库的信息:

腾讯云服务器(CVM):https://cloud.tencent.com/product/cvm

腾讯云数据库(TencentDB):https://cloud.tencent.com/product/cdb

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 利用Django通用类视图(class

    对于这些场景,Django提供了几个class-based view来处理: ListView UpdateView CreateView DeleteView 这几个类视图分别对应着查询ListView...如果你在Django设置settings.pyTEMPLATES下配置了'APP_DIRS': True 的话,Django默认会去渲染/project/app_name/templates/app_name...在web开发约定俗成规则是,对于查询类请求用get,对于修改类请求用post。Django在设计时候也遵循了这个原则,所以以下每个view,都具有支持get和post函数。...而在post请求发送过来时候,Django会根据model里field属性去做合法性校验(类型是否正确、字段是否必填等),在校验成功以后重定向至success_url。...---- 剩下UpdateView以及DeleteView与CreateView实现也是相类似的原理。

    1.5K20

    Django实现动态读取配置参数

    django-environ这种方式在启动前比较适用,在django运行起来后,就无法修改配置了。因此我们会考虑把一些后运行代码配置项写到动态配置里。...常见有:1、基于数据库动态配置(例如MySQL等)2、基于配置中心动态配置(例如consul、nacos等)下面的例子,演示是第一种,基于数据库动态配置。..." verbose_name_plural = "动态配置表"app01/views.py 添加如下import jsonfrom django.conf import settingsimport...demo.settings# 基于数据库动态参数配置DEMOdef test_dynamic_setting(request): # 只关注状态为ON配置项,出现异常抛出错误,便于排查...参考 https://geek-docs.com/django/django-questions/86_django_dynamic_settingspy.html

    26910

    Django DeleteView without confirmation template, but with CSRF attack

    )有点特别蛋疼,他理想流程是这样:点击删除 -> 跳转到确认页面 -> 点击确认删除 -> 删除对象 -> 跳转到success_url。...所以,我理想删除逻辑应该是这样:点击删除 -> Javascript弹出确认框 -> 用户点击确认 -> Javascript生成一个表单 -> 提交 -> 跳转到success_url。...正常开发,ajax请求里会存在很多DELETE方法,所以DELETE一定要检查CSRF TOKEN,否则很容易出现漏洞。 那么回到Django。既然上述做法会引发CSRF漏洞,那么我们怎么办?...那么,一个请求允许哪些方法,是在_allowed_methods函数里定义: ? 这个函数意思就是:根据子类定义过方法名确定允许哪些方法。...比如,Django提供BaseUpdateView类定义了两个方法get和post: ? 所以,继承这个类View一定允许GET和POST两种请求。

    98810

    Django 教程 --- Django视图

    Django视图是Django M V T结构重要参与者之一。视图是用户界面,即您呈现网站时在浏览器中看到内容。它由HTML / CSS / Javascript和Jinja文件表示。...要检查如何使用DjangoMVT(模型,视图,模板)结构制作基本项目,请访问创建项目Django。 视图类型 Django视图分为两大类: 基于功能视图 基于类视图 ?...基于功能视图 基于函数视图是使用python函数编写,该函数以HttpRequest对象作为参数并返回HttpResponse对象。...Django CRUD(创建,检索,更新,删除)基于功能视图:- 创建视图–基于函数视图Django 细节视图–基于函数视图Django 更新视图–基于函数视图Django 删除视图–基于函数视图...在geeks / urls.py, from django.urls import path # importing views from views..py from .views import

    3K30

    DjangoQuerySet

    一、QuerySet   查询集,类似一个列表,包含了满足查询条件所有项。QuerySet 可以被构造,过滤,切片,做为参数传递,这些行为都不会对数据库进行操作。只有你查询时候才真正操作数据库。...意味着QuerySet是惰性执行----即创建查询集不会带来任何数据库访问,直到查询集需要求值时候,Django才会真正运行这个查询。...,运行后得到并不是一系列model实例化对象,而是一个可迭代字典序列 values_list(*field): 它与values()非常相似,它返回是一个元组序列,values返回是一个字典序列... distinct(): 从返回结果剔除重复纪录(如果你查询跨越多个表,可能在计算QuerySet时得到重复结果。... count(): 返回数据库匹配查询(QuerySet)对象数量。

    1.4K32

    基于django视频点播网站开发-step6-个人中心功能

    从本讲起,我们开始个人中心功能开发。个人中心里面包括个人资料、修改密码、订阅设置、意见反馈这四部分。通过这部分开发,我们将会接触到更多django用法。 <!...个人资料 这里主要是对个人资料进行编辑,先显示用户原有的信息,然后用户即可对其进行修改并保存,对于编辑功能,django有自己解决方案,即通过通用视图类UpdateView对模型进行更改。...需要我们做就是在users/urls.py添加个人资料路由, path('profile//', views.ProfileView.as_view(), name='profile...,就实现了个人资料更新,再次彰显了django框架强大。...'), 我们设置订阅视图类为SubscribeView,因为订阅功能和修改个人资料功能类似,也是属于更新操作,所以同样是使用UpdateView来更新。

    1.2K00

    django实现模型字段动态choice操作

    实现方式4: 类似方法2,只不过不通过js来处理,直接通过django模板来处理,主要是重写django/contrib/admin/templates/admin/includes/fieldset.html...这个模板文件,对django模板语法不太熟,遂放弃。...不过stackoverflow上给出这个方法不错,可以参考,就是缺一个获取用户名地方,哪天再看一下 补充知识:django 优雅使用 choice 字段 问题 django如何比较优雅对元组进行标记分类...经济类'), (BookTagNum.COMPUTER, '计算机类'), ) tag = models.IntegerField(choices=TAG_NUM_CHOICE) 在代码尽量不要出现固定硬编码...) 以上这篇django实现模型字段动态choice操作就是小编分享给大家全部内容了,希望能给大家一个参考。

    2.6K00

    djangoModelForm多表单组合解决方案

    所以,基本表单功能看BaseForm已经足够了。 2、从模型创建表单 django对于MVCC与M间映射是非常体贴,集中体现Model模型(比如模型权限与用户认证)。...告诉django需要在表单创建哪些字段。...3、通用视图 django.views.generic.ListView和django.views.generic.edit下CreateView, UpdateView, DeleteView都是通用视图...比如CreateView就会由django自动把页面上POST出form数据解析到model生成表单(或者form_calss指定ModelForm类型表单),同时调用表单save方法将数据添加到模型对应数据库表...再写视图,这里要重写2个方法: class PrimeContractAdd(CreateView):       success_url = ...

    3.4K20

    DjangoBlog|12 博客文章删除功能(优化版)

    在Bootstrap官网教程Components中有一个Modal,就表示动态弹框,我们选择Live demo,复制好里面的内容。...前端页面我们修改好后,我们还需要改下DeleteArticleView视图,需要注释掉视图类template_name,现在我们利用弹框处理,就没必要设置额外模板了。...进入Project/brief_blog/myblog/blog/views.py,将DeleteArticleViewtemplate_name一行注释/删除掉。...老规矩先说怎么解决,注释/删除掉/Project/brief_blog/myblog/templates/article_detial.html: <!...,raphael.js是一个可以渲染可缩放矢量图形 (SVG) js库,这个被引入本来是django-mdeditor渲染md内容用,暂时不知道为什么会和Bootstrapmodal冲突,按上面修改就可以解决问题

    76620
    领券