首页
学习
活动
专区
圈层
工具
发布

Django内置的通用类视图及实例

显示表单的视图,验证错误时,重新显示表单并显示错误信息;成功时,重定向到一个新的URL....,并重定向到get_success_url(),可以覆盖该方法在以上行为之间添加额外的动作.该方法必须返回一个HttpResponse. form_invalid(form):如果表单验证失败,则使用已填充的表单数据和错误信息重新渲染上下文...get_context_data(**kwargs):返回显示对象的上下文数据. 4.CreateView ? 显示用于创建对象的表单的视图,通过验证错误信息重新显示视图,并且保存对象....显示用于编辑现有对象的表单的视图,重新显示具有验证错误信息的视图,并且保存对象.这里使用从对象模型自动生成的表单(除非手动制定表单类)....显示确认页面并删除现有对象的视图.仅当请求方法为POST时,才会删除给定的内容.如果此视图是通过GET提取的,它将显示一个确认页面,其中包含POST到同一网址的表单.

4.4K40

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

显示表单的视图,验证错误时,重新显示表单并显示错误信息;成功时,重定向到一个新的URL....,并重定向到get_success_url(),可以覆盖该方法在以上行为之间添加额外的动作.该方法必须返回一个HttpResponse. form_invalid(form):如果表单验证失败,则使用已填充的表单数据和错误信息重新渲染上下文...显示用于创建对象的表单的视图,通过验证错误信息重新显示视图,并且保存对象....显示用于编辑现有对象的表单的视图,重新显示具有验证错误信息的视图,并且保存对象.这里使用从对象模型自动生成的表单(除非手动制定表单类)....显示确认页面并删除现有对象的视图.仅当请求方法为POST时,才会删除给定的内容.如果此视图是通过GET提取的,它将显示一个确认页面,其中包含POST到同一网址的表单.

4.6K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【Java关系映射入门】实战二

    级联保存 (PERSIST) 可能安全(保存学生时自动保存其新添加的课程)。 关联表列扩展: 如果关联关系本身需要额外属性(如选课日期、成绩),则不能再用简单的 @ManyToMany。...必须将关联表映射为一个独立的实体(如 Enrollment),并用两个 @ManyToOne 替代原来的 @ManyToMany。 性能: 处理大型多对多集合时,注意懒加载和避免 N+1 查询。...解决方法: 在事务边界内 (@Transactional) 提前访问需要的数据。 使用 JOIN FETCH (JPQL/HQL) 或 @EntityGraph 在查询时显式加载所需关联。...在 @OneToMany 和双向 @ManyToMany 中必须正确使用。 索引: 确保所有外键列和关联表的连接列上都有适当的索引。这对关联查询性能至关重要。...DTO 投影: 在需要传输数据到表示层或 API 时,优先考虑使用 DTO (Data Transfer Object) 或接口投影,只选择需要的字段和关联数据,避免加载整个实体图和大量不必要的数据。

    12810

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

    使用基于类的视图处理表单 表单的处理通常有3 个步骤: 初始的的GET (空白或预填充的表单) 带有非法数据的POST(通常重新显示表单和错误信息) 带有合法数据的POST(处理数据并重定向) 你自己实现这些功能经常导致许多重复的样本代码...如果给出queryset,则使用该查询集的模型。 模型表单提供一个form_valid() 的实现,它自动保存模型。如果你有特殊的需求,可以覆盖它;参见下面的例子。...注 当指定一个自定义的表单类时,你必须指定模型,即使form_class 可能是一个ModelForm。...Changed in Django 1.8: 省略fields 属性在以前是允许的,但是导致表单带有模型的所有字段。...模型和request.user 为了跟踪使用CreateView 创建一个对象的用户,你可以使用一个自定义的ModelForm 来实现这点。

    3.1K20

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

    #GET显示表单时,如果要显示初始值,请用initial参数           self.initial = initial or {}          #模板中显示{{form}}时,默认是以...这里仅以CreateView为例说明,因为它相对最复杂,接下来的多ModelForm的提交也是在CreateView上进行的。...比如CreateView就会由django自动的把页面上POST出的form数据解析到model生成的表单(或者form_calss指定的ModelForm类型表单),同时调用表单的save方法将数据添加到模型对应的数据库表中...注意,它会在post请求中判断表单是否可用,is_valid为真时,会调用form_valid方法,因此,重写form_valid方法是第4部分处理多model到一个form的关键。...所以,在用CreateView、一个模型、一个模板实现添加一行记录的功能时是多么简单,因为这些父类会自动生成object,渲染到模板,解析form表单,save到数据库中。

    4.8K20

    JPA实体类中的注解

    方法上,也可以在属性的声明上。   ...(与generator的值一样),sequenceName指定数据库中定义序列的名字,allocationSize指定序列每次增长1 @Column 描述数据库表中该字段的定义,具有一下属性  name...insertable:表示在ORM框架执行插入操作时,该字段是否应出现INSETRT语句中,默认为true。 ...通常ORM框架可以根据属性类型自动判断数据库中字段的类型,但是对于Date类型仍无法确定数据库中字段类型究竟是DATE,TIME还是TIMESTAMP。....多对多关联上是两个一对多关联,但是在ManyToMany描述中,中间表是由ORM框架自动处理  可选  targetEntity:表示多对多关联的另一个实体类的全名,例如:package.Book.class

    5.7K70

    快速学习-JPA中的多对多

    第4章 JPA中的多对多 4.1 示例分析 我们采用的示例为用户和角色。 用户:指的是咱们班的每一个同学。 角色:指的是咱们班同学的身份信息。...inverseJoinColumn:中间表的外键字段关联对方表的主键字段 @JoinColumn 作用:用于定义主键字段和外键字段的对应关系。...* 保存用户和角色 * 问题: * 在保存时,会出现主键重复的错误,因为都是要往中间表中保存数据造成的。...roleDao.save(r1); userDao.save(u1); } 在多对多(保存)中,如果双向都设置关系,意味着双方都维护中间表,都会往中间表插入数据,中间表的2个字段又作为联合主键...,所以报错,主键重复,解决保存失败的问题:只需要在任意一方放弃对中间表的维护权即可,推荐在被动的一方放弃,配置如下: //放弃对中间表的维护权,解决保存中主键冲突的问题 @ManyToMany(mappedBy

    2.4K20

    如何在 Spring Boot 中 读写数据

    如何在 Spring Boot 中 读写数据 (5)@Basic 指定类变量读取方法到数据库表字段的映射关系。对于没有任何特殊注解的getXxxx()方法,默认带有 @Basic 注解。...如何在 Spring Boot 中 读写数据 cascade 属性用于指定级联策略: 策略 | 说明 --- | --- CascadeType.PERSIST | 级联持久化;保存父实体时,也会同时保存子实体...CascadeType.MERGE | 级联合并;修改了子实体,保存父实体时也会同时保存子实体(常用)。 CascadeType.REMOVE | 级联删除;删除父实体时,会级联删除关联的子实体。...的组合体。 (2)@OneToMany 在分析用户与部门之间关系时,会发现一个用户只能属于一个部门,而一个部门可以包含有多个用户。...所以,如果站在部门的角度来看 在分析用户与部门之间的关系时,一个员工只能属于一个部门,但是一个部门可以包含有多个员工,如果我们站在部门的角度来看,部门与员工之间就是一对多的关系,在部门实体类 Department

    18.9K10

    Elixir and Pylons 中多态继承和自关联关系的创建

    用户遇到了 OperationalError,具体错误信息为 “table nav has no column named aftr_id”。...二、解决方案为了解决这个问题,可以采用以下方法:1、修改 Nav 表的 before 字段类型为 ManyToMany,并使用 primaryjoin=Nav.id 选项来指定两张表之间的连接字段。...2、在 Nav 表中,将 before 字段的类型从 OneToMany 更改为 ManyToMany,如下:class Nav(Entity): using_options(inheritance...('Nav', primaryjoin=Nav.id, inverse='after')4、在 Nav 表中,将 before 字段的类型从 OneToMany 更改为 ManyToMany,如下:class...这里需要注意的是,上述示例仅提供了基本的概念,实际应用中可能需要我们根据具体需求进行更复杂的模型定义和关联设置。希望这篇技术文章对您有所帮助。

    1.1K10

    Django学习笔记之Queryset详解

    Manager定义表级方法(表级方法就是影响一条或多条记录的方法),我们可以以models.Manager为父类,定义自己的manager,增加表级方法;QuerySet:Manager类的一些方法会返回...manager类,而不是自定义QuerySet类,一般的我们没有自定义QuerySet类的必要;django.db.models模块中的Model类,我们定义表的model时,就是继承它,它的功能很强大...,通过自定义model的instance可以获取外键实体等,它的方法都是记录级方法(都是实例方法,貌似无类方法),不要在里面定义类方法,比如计算记录的总数,查看所有记录,这些应该放在自定义的manager...不过update()中的键值对的键只能是主表中的字段,不能是关联表字段,如下 Entry.objects.update(blog__name='foo') #错误,无法修改关联表字段,只能修改Entry...在UserJob中定义User为外键,在Job中定义与User是ManyToMany >>> a = User.objects.filter(is_active=True, userjob__is_active

    3.7K30

    SpringDataJpa多表查询 下(多对多)

    inverseJoinColumn:中间表的外键字段关联对方表的主键字段 @JoinColumn 作用:用于定义主键字段和外键字段的对应关系。...roleDao.save(role); } 在多对多(保存)中,如果双向都设置关系,意味着双方都维护中间表,都会往中间表插入数据,中间表的2个字段又作为联合主键,所以报错,主键重复,解决保存失败的问题...:只需要在任意一方放弃对中间表的维护权即可,推荐在被动的一方放弃,配置如下 //配置多对多 放弃对中间表的维护权,解决保存中主键冲突的问题 @ManyToMany(mappedBy = "roles...@ManyToMany(targetEntity = Role.class,cascade = CascadeType.ALL) 级联保存 /** * 测试级联添加(保存一个用户的同时保存用户的关联角色...它利用类与类之间的关系来检索对象。例如:我们通过ID查询方式查出一个客户,可以调用Customer类中的getLinkMans()方法来获取该客户的所有联系人。

    2.5K10

    IM开发干货分享:万字长文,详解IM“消息“列表卡顿优化实践

    这里需要注意重用时导致的页面显示错误,比如在密聊中修改了会话标题的颜色,但是由于 item 的复用,导致群聊的会话标题颜色也改变了。...经过我们对不同分辨率测试机的对比,首屏展示的 item 数量一般为 10-12 个,由于在第一次滑动时,前 3 个 item 是拿不到缓存的,也需要执行 CreateView 方法,那么我们还需要把这...,在 set 方法中统一将是否更新的字段设置为 true。...这样在进行两组数据对比时,我们只需要判断该字段是否为 true,就知道是否存在更新。...想法是美好的,但是在实际封装数据源时发现,类中还有类(也就是类中有对象,不是基本数据类型),外部完全可以通过先 get 到一个对象,然后通过改对象的引用修改其中的字段,这样就跳过了 set 方法。

    2.2K20

    Django-models & QuerySet API

    django中配置mysql数据库 查询queryset时如果需要选取查询集中的某个子集的字段时, 应该用切片,或者first 选择某个子集对象,这样才能够使用到 子集的字段,直接queryset后选择字段会直接报错...一是在INSTALLED_APPS里面加入app名称; 二是配置数据库相关信息 View Code 定义数据库表结构  models.py 使用orm框架,不需要编写原生的sql语句 from django.db...时,数据库里的字段可以为空,如果想要生效需要设置blank=True。...blank    为True时,admin中可以为空。但是不限制数据库,要想限制数据库里,需要设置null。 choices   选择框。...   默认都可以修改,如果为false,admin上面不可修改且不显示,但是数据库可以改 error_messages   自定义错误信息,是字典类型 help_text   该字段的提示信息 unique

    1.9K20

    Hibernate框架学习之四(JPA操作)

    给实体类添加适当的注释可以在程序运行时告诉Hibernate如何将一个实体类保存到数据库中以及如何将数据以对象的形式从数据库中读取出来。   ...通常 ORM 框架可以根据属性类型自动判断数据库中字段的类型 , 但是对于 Date 类型仍无法确定数据库中字段类型究竟是 DATE,TIME 还是 TIMESTAMP....多对多关联上是两个一对多关联 , 但是在 ManyToMany 描述中 , 中间表是由 ORM 框架自动处理。   ...5.1 多对多的实体类注解编写   在角色实体对象中,如果配置了中间表的表名和在中间表中的列明,则在另外多的一方中只需要配置@ManyToMany(mappedBy="users"),如下图: ?...在JPA的多对多关联关系中中只需设置一方的级联保存属性即可,本文中以用户为例,实现如下: ?

    7.8K70

    利用Django通用类视图(class

    框架的好处就是,它已经为用户处理了绝大多数的场景中的重复代码,提供了封装好的接口,使得我们在开发中十分方便。...这个view只实现了get方法,它只接受get请求。也符合它用于查看数据的需求。在代码中,我们只需要指定它对应的模板,对应的model就可以了。...widgets为form的字段类型以及html属性。其中的PasswordInput会将form中的该字段设为password类型;而ClearableFileInput则是带有清除文件功能的类型。...这样,只需要在view当中加入这个form_class就可以实现模板中渲染的form表单具有自定义的属性了: class SSHAuthCreateView(CreateView): template_name...,Django已经自动根据model、form_class自动处理了form的所有字段。

    2K20

    【Java关系映射入门】实战一

    使用: 在“一”方实体类中,使用 @OneToMany 标注集合字段。必须使用 mappedBy 属性(在双向关联中)指定反向关联字段(即“多”方中指向“一”方的字段)。...关键属性: mappedBy:(双向关联必备) 指定关联关系在“多”方实体中的哪个字段进行映射(即“多”方中 @ManyToOne 或 @OneToOne 的字段名)。...双向关联一致性: 强烈推荐在“一”方 (Customer) 中添加辅助方法 (addOrder, removeOrder) 来同时操作双方的引用,确保内存中对象状态的一致性。...orphanRemoval: 启用后,当你从 Customer 的 orders 集合中移除一个 Order 并保存 Customer 时,被移除的 Order 会被自动删除。...级联: 级联 CascadeType.ALL 通常对 @OneToMany 更常见(保存 Customer 时自动保存其所有 Order)。

    13610
    领券