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

有人能解释一下为什么我们在django的CreateView中的form_valid方法中返回super().form_valid(form)吗?

在Django的CreateView中,form_valid方法是在表单验证通过后被调用的方法。返回super().form_valid(form)的作用是调用父类的form_valid方法,以便执行父类中的默认行为。

在Django的CreateView中,form_valid方法的主要作用是保存表单数据到数据库中。当我们在子类中重写form_valid方法时,通常需要在保存数据之前执行一些额外的操作,比如关联其他模型、设置默认值等。但是,我们仍然希望保留父类中的默认行为,即将表单数据保存到数据库中。

通过返回super().form_valid(form),我们可以调用父类的form_valid方法,确保父类中的默认行为得以执行。这样,我们可以在子类中添加自定义的逻辑,同时保留父类中的默认行为,实现完整的表单处理流程。

需要注意的是,super().form_valid(form)返回的是HttpResponseRedirect对象,它会将用户重定向到一个指定的URL。在CreateView中,默认的重定向URL是get_success_url方法返回的URL。如果需要自定义重定向URL,可以重写get_success_url方法。

总结起来,返回super().form_valid(form)的目的是保留父类中的默认行为,将表单数据保存到数据库,并执行重定向操作,以完成表单的提交和处理过程。

腾讯云相关产品和产品介绍链接地址:

  • 云服务器(CVM):提供可扩展的计算能力,支持多种操作系统。详情请参考:https://cloud.tencent.com/product/cvm
  • 云数据库MySQL版(CDB):提供高性能、可扩展的MySQL数据库服务。详情请参考:https://cloud.tencent.com/product/cdb_mysql
  • 云原生容器服务(TKE):基于Kubernetes的容器管理服务,简化容器化应用的部署和管理。详情请参考:https://cloud.tencent.com/product/tke
  • 人工智能机器学习平台(AI Lab):提供丰富的人工智能开发工具和资源,支持机器学习、深度学习等任务。详情请参考:https://cloud.tencent.com/product/ailab
  • 物联网开发平台(IoT Explorer):提供全面的物联网解决方案,支持设备接入、数据管理、应用开发等功能。详情请参考:https://cloud.tencent.com/product/iothub
  • 移动推送服务(信鸽):提供稳定可靠的移动推送服务,帮助开发者实现消息推送功能。详情请参考:https://cloud.tencent.com/product/tpns
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

djangoModelForm多表单组合解决方案

比如CreateView就会由django自动把页面上POST出form数据解析到model生成表单(或者form_calss指定ModelForm类型表单),同时调用表单save方法将数据添加到模型对应数据库表...注意,它会在post请求判断表单是否可用,is_valid为真时,会调用form_valid方法,因此,重写form_valid方法是第4部分处理多model到一个form关键。...我们已经习惯了Model里定义好类型和有点注释作用还能当labelverbose_name,还需要在forms.Form里再来一遍?还需要在视图中写这么通用逻辑代码?当然不用。...那么,从第1部分我介绍Formprefix,以及第3部分里类图中ProcessFormView允许重定义form_valid,以及第2部分ModelFormsave方法行为控制,解决方案已经一目了然了...,父类ProcessFormView会在PrimeContractForm表单is_valid方法返回True时调用该方法       def form_valid(self, form):

3.4K20
  • python-Django-URL 路由(二)

    首先,我们定义一个名为“blog”Django应用程序,并在其中创建一个名为urls.py文件: from django.urls import path from . import views...在这个示例我们将这些视图函数定义名为views.py文件:: from django.shortcuts import render, get_object_or_404, redirect...from django.views.generic.edit import CreateView, UpdateView from django.contrib.auth.decorators import...) return super().form_valid(form) post_list = PostList.as_view() 在这个示例我们定义了四个视图函数。...这个视图函数使用Django通用视图类CreateView来处理创建新文章表单,然后重定向到post_list视图函数,这个视图函数将渲染一个包含所有文章列表HTML模板。

    81920

    Django内置通用类视图及实例

    (self.object) context_object_name:self.object也将存储get_context_object_name()返回名称,该名称默认为模型小写名称. 3....方法: get_success_url():决定在表单成功验证后重定向到URL,默认返回success_url. form_valid(form):表单验证成功后调用该方法(注意并没有对数据进行操作...,并重定向到get_success_url(),可以覆盖该方法以上行为之间添加额外动作.该方法必须返回一个HttpResponse. form_invalid(form):如果表单验证失败,则使用已填充表单数据和错误信息重新渲染上下文...可以直接用Django通用视图里UpdateView和CreateView。...这里我们模型添加: # projtrack/model.py class Project(models.Model): ...

    2.9K40

    Django内置通用类视图CBV及示例

    (self.object) context_object_name:self.object也将存储get_context_object_name()返回名称,该名称默认为模型小写名称. 3....方法: get_success_url():决定在表单成功验证后重定向到URL,默认返回success_url. form_valid(form):表单验证成功后调用该方法(注意并没有对数据进行操作...,并重定向到get_success_url(),可以覆盖该方法以上行为之间添加额外动作.该方法必须返回一个HttpResponse. form_invalid(form):如果表单验证失败,则使用已填充表单数据和错误信息重新渲染上下文...id="id_subject" type="text" name="subject" maxlength="100" /> 其它form模版渲染方式还包括: form.as_ul:渲染表单为一系列...这里我们模型添加: # projtrack/model.py class Project(models.Model): ...

    3.2K10

    django嵌套try-except实例

    orm列表扁平化,列表交集,批量删除 补充知识:Django 异常捕获中进行数据库保存,保存后将异常再抛出 需求: 当我检查配额时,如果配额不足,我需要将订单状态改为5,然后再将原有异常抛出 一:...def form_valid(self, form): ... ......self.object.save() raise e 该方法可以解决上述问题 但该方法对整个视图有效,如果在视图其他地方需要用到事务一致性,则显然不合理 二:优化,定义事务保存点,局部控制事务一致性...class xxxxxxxx(): def form_valid(self, form): ... ......所以我们可以通过调整保存点位置,实现我们需求。 以上这篇django嵌套try-except实例就是小编分享给大家全部内容了,希望能给大家一个参考。

    2.1K10

    Django | 开发】面试招聘信息网站(用户登录注册&投在线递简历)

    (不建议), 相关配置 方法二:allauth 集成(建议) ✨【Django | allauth】登录_注册_邮箱验证_密码邮箱重置✨ ✨【Django | allauth】useprofile...用户模型扩展✨ ✨【Django | allauth】重写allauth重置密码方法✨ 二、创建建立模型 jobs应用添加如下模型 class Resume(models.Model):..., change): obj.applicant = request.user super().save_model(request, obj, form, change) 4.效果 三、...(), name='resumeForm') ] 2) 优化表单细节 这里我们工作城市 和 职位并没有带到表单 解决: 类视图写上 初始化方法get_initial # 类视图 class ResumeCreateView...message in self.request.GET: initial[message] = self.request.GET[message] return initial def form_valid

    88710

    Django-xadmin+rule对象级权限实现方式

    数据库记录导入导出(xsl, json等),并且拥有对象级权限控制(如:小A不能导出小B公司信息,更不能导入小B公司信息进行更新和新增) 1.2 现状 实现需求1:Django-admin让我们能够很方便实现一个管理后台程序...补充知识:django 扩展自带权限,使其支持对象权限 扩展django 自带权限 说明 不重写 自带权限基础上,完成支持对象权限,适用于小型项目。...} Role 表 添加 系统用户组 dev 角色组权限 asset-dev只读 权限验证代码 import json from system.models import Role from functools...().dispatch(request, *args, **kwargs) @role_permission_update_delete def form_valid(self, form): self.object...= form.save() return super().form_valid(form) class AssetDetail(LoginRequiredMixin, DetailView): model

    94920

    Django源码学习-8-ListView&DetailView通用视图

    Django网络应用开发5项基础核心技术包括模型(Model)设计,URL 设计与配置,View(视图)编写,Template(模板)设计和Form(表单)使用。...Django通用视图可以减少开发单调性,它抽象出一些视图开发中常用代码和模式,这样就可以无需编写大量代码情况下,快速编写出常用视图函数。 ?...): # 指明要操作Model(展示 Publisher 所有对象) model = Publisher # 模板 context model 变量名,默认是 object_list...② DetailView:显示一个对象某个属性详细信息 用于显示某一 Model 一个 object 详细信息。...object = super().get_object() # Record the last accessed date # 当有人访问该页面时,更新最后访问时间

    1.4K10

    利用Django通用类视图(class

    框架好处就是,它已经为用户处理了绝大多数场景重复代码,提供了封装好接口,使得我们开发十分方便。...web开发我们常常遇到一个场景就是:页面发起一个请求,后端执行相应处理(修改数据、查询数据、插入数据等操作),再予以返回。...这个view只实现了get方法,它只接受get请求。也符合它用于查看数据需求。代码我们只需要指定它对应模板,对应model就可以了。...web开发约定俗成规则是,对于查询类请求用get,对于修改类请求用post。Django设计时候也遵循了这个原则,所以以下每个view,都具有支持get和post函数。...> 渲染时候,Django已经自动根据model、form_class自动处理了form所有字段。

    1.5K20

    diango之基于内置视图CBS编程

    Class-based views是Django为解决建站过程常见呈现模式而建立。...FormView 提交From 网站联系我们或emai订阅form CreateView 创建对象 创建新文章页 UpdateView 更新对象 修改文章页 DeleteView 删除对象 删除文章页...def get_queryset(self): 第一个方法返回一个字典给前端,包括分页信息,列表信息,已经其他自定义信息;第二个方法返回数据库获取到数据(可能经过条件迭代),具体实现实例代码如下...使用mixin可以为class提供额外功能,但它自身却不能单独使用类. 具有多继承能力编程语言中, mixin可以为类增加额外功能或方法....Django, 我们可以使用mixin为CBVs提供更多扩展性, 当然类继承过程, 我们推荐以下原则: Django自身提供View永远在最右边 mixin依次以上view左边 mixin

    70730

    基于python+django二手商品交易平台-二手商品供需系统

    项目简介该项目是基于pythonweb类库django开发一套web网站,二手商品交易平台,给师弟开发课程作业。大家在学习过程,遇到问题可以github咨询作者。...我们一一讲解首页首先是首页,它模版位于templates/app/index.html 它主要是用来展示首页内容, 并提交搜索词,到搜索接口,所有的接口都位于app/urls.py里面,如下app_name...,从urls.py中看到,详情页是由DetailView来实现我们来窥探它全貌:class DetailView(generic.DetailView): model = Product...同样是观看代码:class CommitView(generic.CreateView): model = Product form_class = CommitForm template_name...") return reverse('app:commit')它是继承自CreateView,因为是创建操作嘛,post我们通过ratelimit来限制提交次数,防止恶意提交。

    49000

    基于python开发口罩供需平台

    项目简介 该项目是基于pythonweb类库django开发一套web网站,做为一个公益项目。...我们一一讲解 首页 首先是首页,它模版位于templates/app/index.html 它主要是用来展示首页内容, 并提交搜索词,到搜索接口,所有的接口都位于app/urls.py里面,如下 app_name...,从urls.py中看到,详情页是由DetailView来实现我们来窥探它全貌: class DetailView(generic.DetailView): model = Product...同样是观看代码: class CommitView(generic.CreateView): model = Product form_class = CommitForm template_name...") return reverse('app:commit') 它是继承自CreateView,因为是创建操作嘛,post我们通过ratelimit来限制提交次数,防止恶意提交。

    63030

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

    从本讲起,我们开始个人中心功能开发。个人中心里面包括个人资料、修改密码、订阅设置、意见反馈这四部分。通过这部分开发,我们将会接触到更多django用法。 <!...需要我们就是users/urls.py添加个人资料路由, path('profile//', views.ProfileView.as_view(), name='profile...当更新成功后,django会回调get_success_url来将结果告诉模板,因此我们可以get_success_url里面做一些定制工作,我们可以传一些自己参数。...', { 'form': form }) 代码,当拿到form之后,通过验证form合法性,然后调用user.save()来保存修改。...只要我们配置好model、form_class、template_name,django就自动为我们创建记录。 另外,我们还使用了一种限流量技术:ratelimit。

    1.2K00
    领券