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

基于泛型类的视图CreateView -如何将request.user与某个modelobject.user进行比较

基于泛型类的视图CreateView是Django框架中的一个视图类,用于处理创建对象的请求。它提供了一个通用的表单视图,可以通过继承和配置来实现具体的功能。

在使用CreateView时,如果想要将request.user与某个modelobject.user进行比较,可以通过重写CreateView的form_valid方法来实现。具体步骤如下:

  1. 首先,在views.py文件中导入CreateView和需要创建对象的模型类:
代码语言:txt
复制
from django.views.generic.edit import CreateView
from yourapp.models import YourModel
  1. 创建一个继承自CreateView的子类,并指定模型类、表单类等属性:
代码语言:txt
复制
class YourCreateView(CreateView):
    model = YourModel
    form_class = YourForm
    template_name = 'your_template.html'
  1. 重写form_valid方法,在该方法中进行request.user与modelobject.user的比较:
代码语言:txt
复制
def form_valid(self, form):
    # 获取表单数据
    data = form.cleaned_data
    # 获取当前用户
    user = self.request.user
    # 获取modelobject的user属性
    model_user = data['user']
    
    # 进行比较
    if user == model_user:
        # 如果相等,保存表单数据
        return super().form_valid(form)
    else:
        # 如果不相等,返回错误信息
        form.add_error(None, "User does not match.")
        return self.form_invalid(form)

在上述代码中,我们首先通过form.cleaned_data获取表单数据,然后通过self.request.user获取当前用户,再通过data['user']获取modelobject的user属性。接着,我们进行了比较,如果相等则调用父类的form_valid方法保存表单数据,否则调用form_invalid方法返回错误信息。

这样,当用户提交表单时,CreateView会自动调用我们重写的form_valid方法进行比较,并根据比较结果执行相应的操作。

关于泛型类的视图CreateView的更多信息,以及Django中其他视图类的使用和配置,可以参考腾讯云的Django文档: 腾讯云Django文档

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

相关·内容

django 1.8 官方文档翻译: 3-4-3 使用基于视图处理表单

使用基于视图处理表单 表单处理通常有3 个步骤: 初始GET (空白或预填充表单) 带有非法数据POST(通常重新显示表单和错误信息) 带有合法数据POST(处理数据并重定向) 你自己实现这些功能经常导致许多重复样本代码...为了避免这点,Django 提供一系列通用基于视图用于表单处理。...注意这里我们是如何配置通用基于视图;我们自己没有写任何逻辑: #views.py from django.views.generic.edit import CreateView, UpdateView...fields 属性工作方式ModelForm 内部Metafields 属性相同。...模型和request.user 为了跟踪使用CreateView 创建一个对象用户,你可以使用一个自定义ModelForm 来实现这点。

1.8K20

Django REST framwork权限验证实例

注意:permission_classes设置是:验证是用户是否登录、用户是否可以操作该数据等权限; 权限组合方式,目前支持:&(and) 或|(or) 非~(not) 例如:permission_classes...view.py '''基于视图''' from snippets.models import Snippet from snippets.serializers import SnippetSerializer...(generics.RetrieveDestroyAPIView): ''' User表详情api视图 查 改 删操作 ''' queryset = User.objects.all(...传递授权, 1、请求要进行某个操作时候 – 2、传递参数将授权列表中多个授权实例化得到实例化对象- 3、调用所有授权实例对象has_、permission以及has_object_permission...方法 – 4、所有的返回结果都为true – 5、该操作授权才通过,数据操作向下继续进行

1.1K10

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

个人资料 这里主要是对个人资料进行编辑,先显示用户原有的信息,然后用户即可对其进行修改并保存,对于编辑功能,django有自己解决方案,即通过通用视图UpdateView对模型进行更改。...可以看到我们还继承了LoginRequiredMixin和AuthorRequiredMixin两个,这两个类属于公共,其中LoginRequiredMixin用途是:只允许登录用户访问该视图...我们先添加路由 path('change_password/', views.change_password, name='change_password'), 修改密码比较特殊,需要对密码进行特殊处理...'), 我们设置订阅视图为SubscribeView,因为订阅功能和修改个人资料功能类似,也是属于更新操作,所以同样是使用UpdateView来更新。...CreateView,该类属于新建通用视图

1.1K00

Spring MVC各组件近距离接触--下--04

至于每个ViewResolver实现如何处理具体逻辑视图具体View实例之间对应关系,则因实现不同而存在差异。...---父方法只会去调用loadView return super.createView(viewName, locale); } //用户设置好当前视图解析器能够解析视图数组,然后挨个...如果我们想要避免每次为同一视图指定某些共同属性,也可以定义一个模板声明,然后通过parent引用该模板声明。...VelocityEngine进行视图模板数据合并(Merge)操作,以便最终输出视图页面。...---- ViewResolver 查找序列(Chain Of ViewResolver) 虽然我们在之前示例中一直都是使用一个InternalResourceViewResolver进行视图查找,但这并不意味着每个基于

41140

SpringMVC 九大组件之 ViewResolver 深入分析

接下来我们就对这四个视图解析器逐一进行介绍,先从最简单 BeanNameViewResolver 开始吧。...getBestView 方法逻辑比较简单,就是查找看所有 View MediaType,然后和请求 MediaType 数组进行匹配,第一个匹配上就是最佳 View,这个过程它不会检查视图是否真的存在...4.1 UrlBasedViewResolver UrlBasedViewResolver 重写了父 getCacheKey、createView、loadView 三个方法: getCacheKey...如果前面都不是,则调用父 createView 方法去构建视图,这最终会调用到子类 loadView 方法。...这里代码比较简单,我就不贴出来了,最后在 ViewResolverComposite#resolveViewName 方法中,遍历其他视图解析器进行处理: @Override @Nullable public

48040

django中ModelForm多表单组合解决方案

所以,基本表单功能看BaseForm已经足够了。 2、从模型创建表单 django对于MVC中CM间映射是非常体贴,集中体现中Model模型中(比如模型权限用户认证)。...3、通用视图 django.views.generic.ListView和django.views.generic.edit下CreateView, UpdateView, DeleteView都是通用视图...这里仅以CreateView为例说明,因为它相对最复杂,接下来多ModelForm提交也是在CreateView进行。...可以看到,除去定义model或者form外,几行代码就可以搞定这么多事。我们看看CreateView继承关系: 简单介绍下CreateView通用视图中每个父作用。...View是所有视图,根据方法名分发请求到具体get或者post等方法,提供as_view方法。

3.3K20

drf框架中jwt认证,以及自定义jwt认证

前两步操作失败 返回None => 游客 前两步操作成功 返回user,auth => 登录用户 注:如果在某个分支抛出异常,直接定义失败 => 非法用户 四.自定义认证,基于jwt 其实就是在jwt...和request.user.is_staff is_staff(可以登录后台管理系统用户) 自定义:基于authGroupPermission表 1)自定义权限,继承BasePermission...'anon': '3/min', # 游客一分钟可以访问3次 } 在视图中: class TempAPIView(APIView): ......throttle_classes = [AnonRateThrottle, UserRateThrottle] 自定义:基于authGroupPermission表 1)自定义频率...10次 如果是 'anon': '3/min', # 游客一分钟可以访问3次 'sms': '1/min', #是我们自定义,默认只提供user以及anon } 在视图层 class

2.6K10

窗口分割

,所受限制也比较多,因此我们不将动态创建作为重点。...在将视图于切分窗口联系在一起时候必须先将切分窗口创建好。参数含义同上。动态创建相比,静态创建代码要简单许多,而且可以最多创建16×16窗格。...不同窗格我们可以使用CreateView()函数来填充不同视图。...(无效设置)   1.在对框架窗口进行分割之后需要根据需求设置每个分割窗口大小,但是在通过createView(…)设置大小时,往往起不到想要结果,如下代码并不能将框架窗口按照预设大小来进行分割...要隐藏分割器窗口中某个视图,只需调用GetPane函数得到视图指针,然后调用ShowWindow函数隐藏窗口。

71720

Python进阶42-drf框架(四)

基于auth认证规则 Django框架采用是RBAC认证规则,RBAC认证规则通常分为三表规则、五表规则,Django采用是六表规则 三表规则: 1.用户表 2.角色表 3.权限表 五表规则...自定义认证规则 # 3.认证规则基于: # - 没有认证信息返回None(游客) # - 有认证信息认证失败抛异常(非法用户) # - 有认证信息认证成功返回用户认证信息元组(合法用户)...# 4.完成视图配置: # - 全局(settings文件中) # - 局部(确切视图) from rest_framework.exceptions import AuthenticationFailed...""" 1) 创建继承BasePermission权限 2) 实现has_permission方法 3) 实现体根据权限规则 确定有无权限 4) 进行全局或局部配置 认证规则 i.满足设置用户条件...方法 # 限制对象返回 限制信息有关字符串 # 不限制对象返回 None (只能放回None,不能是False或是''等) ---- throttles 频率 首先先在api

1.6K20

Spring MVC各组件近距离接触--下下--05

---- View实现原理回顾 总地来说,当前绝大多数视图渲染技术都是构建在模板原理之上。我们回想一下,这种基于模板视图生成方式在我们生活中到处可见。...因为二者都是基于同样理念构建视图,所以,FreeMarkerView和velocityView有着共同AbstractTemplateView,它们之间继承层次关系如图所示。...AbstractJasperReportssingleFormatview 只负责输出单一报表文件View抽象,实现了不同模板类型读入以及数据合并操作,将不同报表格式输出通过模板方法下发给具体子类实现...redirect:和forward:前缀解析时机,是在UrlBasedViewResolvercreateView方法中完成,不清楚可以回看: UrlBasedViewResolvercreateView...Json返回值View实现,如下所示,默认使用JackSon框架来进行JSON序列化处理: ViewResolver采用基于内容协商机制来进行处理: 具体细节不多展开,后续会专门对

80530

详解React Native渲染原理

综上,不难看出ReactNative和React最大差别在于渲染上差别。即React使用浏览器进行渲染,而ReactNative使用Native进行渲染。...JS侧调用createView createView顾名思义就是创建一个真正view,既然要创建视图,那么肯定是由native侧来实现。...我们native侧封装用于暴露给JS侧使用原生视图组件也需要视同RCTViewManager来管理。通常需要自定义一个继承自RCTViewManager。...RCTRootView 再说RCShadowView之前,需要先了解下“真正”view,RCTView、RCTRootView等。先看一下之相关图: ? 上图取材于这篇文章 。...其主要功能是通过facebook-Yoga在子线程(shadow thread)进行布局相关计算。所以RCTShadowView主要接管了UI视图布局计算工作。

10.4K1513

Django内置通用视图及实例

方法: get_queryset():获取此视图对象列表.必须是可迭代或者可以使查询集.默认返回queryset属性.可以通过重写该方法实现动态过滤.让这种方式能够工作关键点,在于当视图被调用时...属性: tamplate_name: form_class: fields:字段名称列表,其解释方式ModelFormMeta.fields相同.如果你是自动生成表单,那么该属性不能省略. success_url...显示用于编辑现有对象表单视图,重新显示具有验证错误信息视图,并且保存对象.这里使用从对象模型自动生成表单(除非手动制定表单)....该视图用法CreateView基本相同,仅在BaseUpdateView中对get()和post()内部实现有区别. 6.DeleteView ?...可以直接用Django通用视图UpdateView和CreateView

2.9K40

基于Strview.js项目脚手架StrviewApp是怎么搭建起来

之前大家可能觉得它跟Vue.js差不多,是的,正是借鉴Vue.js思想,但是有些地方还是不一样(个人觉得)。所以,今天,这篇文章介绍基于Strview.js搭建项目脚手架工具StrviewApp。...createview API methods(); 我们先引入了strview.js,导入createView这个API用于创建视图。...App.js 上面说到,App.js用显示视图模板,那么下面我们来看下。 import myParagraph from '....我们从前面目录结构知道,components文件夹存放是组件,而template文件夹存放是模板文件。如何将导入模板组件呈现到页面上呢?那么就需要在模板字符串中使用${}占位符。...需要自定义地方是第一个参数第二个参数中getElementById()方法中参数,推荐使用相同字符串。

72110

Django内置通用视图CBV及示例

方法: get_queryset():获取此视图对象列表.必须是可迭代或者可以使查询集.默认返回queryset属性.可以通过重写该方法实现动态过滤.让这种方式能够工作关键点,在于当视图被调用时...属性: tamplate_name: form_class: fields:字段名称列表,其解释方式ModelFormMeta.fields相同.如果你是自动生成表单,那么该属性不能省略. success_url...显示用于编辑现有对象表单视图,重新显示具有验证错误信息视图,并且保存对象.这里使用从对象模型自动生成表单(除非手动制定表单)....该视图用法CreateView基本相同,仅在BaseUpdateView中对get()和post()内部实现有区别. 6.DeleteView ?...可以直接用Django通用视图UpdateView和CreateView

3.2K10

iOS架构入门 - MVC模式实例演示

除此之外,此模式通过对复杂度简化,使程序结构更加直观 控制器(Controller)--> 负责转发请求,对请求进行处理。 视图(View) --> 界面设计人员进行图形界面设计。...模型(Model) --> 程序员编写程序应有的功能(实现算法等等)、数据库专家进行数据管理和数据库设计(可以实现具体功能)。...---- 以上出自维基百科资料,下面说点人为描述(简单易懂)~ Model层: 数据处理层,包括网络请求,数据加工 View层: 所有App上看得到界面 Controller层: Model View...,先说这样写好处,以及初学者为什么会这么写: 简单,网络请求完,直接在当前控制器刷新TableView数据源 比如要找某个界面的网络请求,直接切到这个界面对应controller就行,因为数据请求...但是,秉着这种思想,其实我最近写了一个多重过滤袋滑动多控制器界面,界面相对来说比较复杂,控制器代码也才200行,总的来说还算干净。

1.3K00

Django REST Framework-权限

权限系统基于“允许访问用户”和“访问用户操作”进行配置,使您可以完全控制API访问级别。...在DRF中,权限是通过Permission实现,Permission是一个抽象,定义了几种方法来控制API访问权限。...AllowAny AllowAny是默认权限,不需要任何认证即可访问API视图。该权限非常适合用于公共API,如新闻或博客文章阅读视图。...该权限非常适合用于需要对数据进行更改或创建视图。IsAdminUser IsAdminUser是指只有超级用户才能访问API视图。...这是一种比较常见权限类型,适用于需要保护数据但允许读取情况。除了以上这些默认权限类型,DRF还提供了一些自定义权限,使您可以更好地控制API访问级别。

61820

【腾讯云监控】AIOps中告警关联收敛方案

如何将多条告警关联在一起进行展示和分析,以及如何将多条有联系告警转换成一条或少量几条包含更多故障信息告警,以此达到降低活动告警种类和数目,减轻运维人员工作压力,提高故障精确定位效率,是一个很值得研究课题...如何将多条告警关联在一起进行展示和分析,以及如何将多条有联系告警转换成一条或少量几条包含更多故障信息告警,以此达到降低活动告警种类和数目,减轻运维人员工作压力,提高故障精确定位效率,是一个很值得研究课题...基于时间序列相似性关联展示 我们通过对monitor单视图所有异常时间序列做聚,将相似的时间序列放在一起展示。目前已经实现了同一视图所有时间序列异常做关联展示。...异常时间序列关联展示(腾讯-云监控) 在告警记录里面,将相似得告警记录进行,放在一起展示。...以monitor时间序列关联为例,将在monitor同一视图异常时间序列进行,一起展示效果图: tapd_20405382_base64_1585049635_16.png 5.2.

4.5K61

技术分享 | 跨平台API对接(Java)

JSON API 使用 JSON 方式进行操作,因为 json 基本上已经是应用之间数据交换准标准格式之一,这种方式比较方便 Javascript 或者和其他应用集成。...满足特定条件时自动触发 Jenkins 如果需要动态创建 Jenkins Job ,如根据中间结果在某个触发点自动生成,再如生成 Job 需要使用参数也是动态运行阶段才能取到值场景下。...基于 Jenkins 自研产品或工具 如果产品或工具相关功能,需要基于 Jenkins 进行研发,而且不希望用户直接使用 Jenkins,仅将 Jenkins 作为背后执行引擎场景,这种情况下也需要使用...快速开始 下面我们通过实战学习下如何将 Spring Boot 和 Jenkins 进行集成,实现跨平台 API 对接。...,其本质调用是 JenkinsHttpClient 方法,只是根据操作 Jenkins 功能进行了语义级别的封装JenkinsServer(JenkinsHttpConnection client

1.3K30
领券