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

Django项目知识点(三)

本文一篇完全介绍django最重要model 6.django model 模型数据唯一而且准确信息来源。它包含正在储存数据重要字段和行为。一般来说,每一个模型都映射一个数据库表。...这个选项指定,模型复数形式是什么,比如verbose_name_plural = "学校"如果不指定Django会自动模型名称后加一个’s’ 字段类型 models.CharField 字符串类型...注意:Django一个模型只允许有一个自增字段,并且该字段必须为主键!...文章和作者之间关系就是典型多对一关系。作者和文章关系就是一对多。 多对多:某表创建一行数据,有一个可以多选下拉框 不同学生有不同课程表 再比如文章和标签关系。...实际网站可能需要保存用户许多信息,但是有些信息不经常用

1.8K30

自定义 DjangoUser Model,扩展 AbstractUser类注意事项

定制一个User Model最简单方式构造一个兼容用户模型继承于AbstractBaseUser。...通过createsuperuser管理命令创建一个用户,用于提示一个字段名称列表。 class MyUser(AbstractBaseUser):     ...     ...password必需 4.扩展Django默认User 如果你完全满意Django用户模型和你只是想添加一些额外属性信息,你只需继承 django.contrib.auth.models.AbstractUser...如果你用户模型扩展于 AbstractBaseUser,你需要自定义一个ModelAdmin类。他可能继承于默认django.contrib.auth.admin.UserAdmin。...它提供给你所有Django权限类所必须方法和字段 7.1 如果要定制User权限系统,最简单方法继承PermissionsMixin 源码: class PermissionsMixin(models.Model

5.8K20
您找到你想要的搜索结果了吗?
是的
没有找到

Django User 模块之 AbstractUser 扩展详解

最近在写博客,刚好写到用户注册注销模块,觉得这一方面还是挺有趣尝试掀开 Django 源代码一切 API 就不会变得那么摸不着。...如果只满足于用户注册只登记其邮箱或是用户名,Django 自带 User 模块既可以实现。实际上,一个普遍要求是注册用户应该能够修改自己头像信息,邮箱信息,昵称信息等其他更灵活需求。...注意:为了让 Django 能够识别使用自定义用户模型,必须要在 settings.py 设置自定义模块位置,如在 settings.py 上添加 AUTH_USER_MODEL = ‘blog.user...内置用户类AbstractUser 我们之前讲过了model模型作用和父类作用,这次介绍内置用户类AbstractUser就是Django内置一个关于用户操作类,它极大地方便了我们对model...模型对User用户类设计。

1.8K10

Django实战-小程序服务端登录验证-上

授权登录验证前,需要对本项目的模型(Model)进行设计。...设计模型,需要考虑用户和应用之间有怎样联系,用户可以添加多个应用和删除某个应用,在这样需求下,可以将用户和应用设置成多对多关系,即一个用户可以关联多个应用。...一、模型(Model)设计 本项目的User 模型,没有继承Django自带AbstractBaseUser类。而是 models.Model 自定义用户模型。...models.ManyToManyField 用户和应用多对多外键。...6.小程序将token和用户id保存在storage 下次请求需要验证用户身份页面header中加入token这个字段 ① 小程序获取用户信息 Django实战-初识小程序授权登录 ?

1K10

测试开发进阶(三十四)

): """ 数据库表公共字段 """ create_time = models.DateTimeField(auto_now_add=True, verbose_name..."逻辑删除") class Meta: # 为抽象模型类, 用于其他模型继承,数据库迁移时不会创建BaseModel表 abstract = True...verbose_name = "公共字段表" db_table = 'BaseModel' default=False默认情况下不删除 各模块模型 configures # configures.models.Configures..., help_text='包含接口') class Meta: db_table = 'tb_testsuits' verbose_name = '套件信息'...只进行逻辑删除 获取项目列表信息,要求能获取此项目下「接口总数」,「用例总数」,「配置总数」,「套件总数」,同时输出创建时间,格式为2019-11-05 11:43:00 要求提供获取此项目下所有项目名接口

46330

第 16 篇:别再手动管理接口文档了

这样做虽然简单,弊端也很明显:一需要写大量描述文字,非常枯燥,其实这些信息代码已有体现,有点像是使用自然语言又把代码写了一遍;二一旦接口有了更新,就必须手动同步更新接口文档,开发人员很容易搞忘这件事...因为 PostSearchView 继承自 HaystackViewSet,代码并没有显示地定义 retrieve 这个方法,而是从父类继承而来,所以我们借助 django 提供辅助函数 method_decorator...原理 drf-yasg 会尝试去解析接口对应序列化器(Serializer),从序列化器中提取出对应请求和响应字段(如果序列化器找不到,它会进一步去序列化器关联模型找),因此我们就可以给序列化器定义字段添加说明信息...,但在全局进行了配置),解析 list_archive_dates 参数,drf-yasg 错误地解析到了从视图集继承 PostFilter 和 PageNumberPagination,所以就把这两个类定义参数也包含进文档了...但是 drf-yasg 还是不够聪明,它去解析列表接口可能参数,顺便又把 PostFilter 字段也一并解析了,这是用来过滤博客文章,显然不能用于过滤评论列表,我们需要将这些无关参数移除,

1.8K20

django 1.8 官方文档翻译:2-1-1 模型语法

模型继承 Django 模型继承与 Python 普通类继承方式几乎完全相同,但是本页头部列出模型基本要求还是要遵守。...你唯一需要作出决定就是你想让父模型具有它们自己数据库表,还是让父模型只持有一些共同信息而这些信息只有模型才能看到。 Django 中有3风格继承。...代理 model 也可以继承任意多个抽象基类,前提它们没有 定义任何 model 字段。 代理模型管理器 如果你没有代理 模型定义任何 管理器 ,代理模型就会从父类中继承 管理器 。...代理 模型与非托管 模型之间差异 代理 model 继承看上去和使用Meta类 managed 属性非托管 model 非常相似。两者并不相同,你应当考虑选用哪种方案。... Python 看来,上面的限制仅仅针对字段实例名称:如果你手动指定了数据库列名称,那么多重继承,你就可以子类和某个祖先类当中使用同一个列名称。(因为它们使用两个不同数据表字段)。

4.9K20

【云+社区年度正文】Django从入门到精通No.2----模型

二、模型定义 模型可以定义储存数据字段和值,比如我们进行表单提交时候,一些注册信息就可以利用模型来进行管理,然后统一提交到数据库。简单来说,模型与数据库有关操作集合。...与 DateField 具有相同额外参数。 DecimalField TextInput 固定精度小数, Python 中使用 Decimal 实例表示。...to_field=None # 要关联字段名称 on_delete=None # 删除关联表数据,当前表与其关联行为...db_table=None # 默认创建第三张表,数据库中表名称 3.一对一 一对一其实就是 一对多 + 唯一索引,两个类之间有继承关系,默认会创建一个一对一字段,一对一使用...to_field=None # 要关联字段名称 on_delete=None # 删除关联表数据,当前表与其关联行为 五、管理员登陆 为了能让大家提前看到

2.1K00

drf序列化器之反序列化数据验证

验证成功,可以通过序列化器对象validated_data属性获取数据。 定义序列化器,指明每个字段序列化类型和选项参数,本身就是一种验证行为。...4、validate验证 序列化器需要同时对多个字段进行比较验证,可以定义validate方法来验证 def validate(self, data): """验证多个字段,方法名必须为...validate, 参数data代表了所有字段数据值,其实就是视图代码实例化序列化器对象data参数 开发,类似 密码和确认密码,此时这2个字段,必须进行比较才能通过验证...6、小结 is_valid实际上内部执行了三种不同验证方式: 先执行了字段内置验证选项 执行了validators自定义选项 最后执行了validate自定义验证方法[包含了validate_<字段...help_text 用于HTML展示API页面,显示字段帮助提示信息

2.1K30

测试开发进阶(二十二)

projects/models.py编写 from django.db import models class Person(models.Model): """ 创建Person...,需要在当前应用下models.py文件定义 一个数据库模型类相当于一个数据表(Table) 一个数据库模型类需要基础Model或者其子类 定义一个类属性,就相当于数据库表一个字段( first_name...字段 max_length 最大长度 unique 设置当前参数唯一 verbose_name 设置人性化字段help_text 用于API文档中文名 null 允许为空 black 设置前端可以不传递...修改展示部分 fields 指定在修改「新增」需要显示字段 list_display 指定要列出字段 from django.contrib import admin from .models...Projects -> Projects 第二个参数 设置父表删除之后,该字段处理方式 models.CASCADE:子表也会被删除 models.SET_NULL:当前外键会被设置为None

61930

测试开发进阶(二十五)

格式数据,其他类型不支持 列表页视图没有分页,过滤,排序功能 Django REST framework Django框架基础上,进行二次开发 用于构建Restful API 简称为DRF框架或REST...添加 'rest_framework' INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes...逐步优化之前代码 之前「快速创建实例」部分为演示最终效果,现在先恢复到原有状态 创建序列化 创建 projects/serializer.py 需要输出哪些字段,那么序列化器中就定义哪些字段 from...max_length=50, help_text='发布应用') # allow_null相当于模型null # allow_blank相当于模型blank desc =...) raise_exception=True校验失败会抛出异常 调用 is_valid方法后,才可以调用 errors属性,获取校验错误提示「字典格式」 class ProjectsList(View

78630

Django教程 —— 模型类详解

引言 之前 Django模型设计 简单介绍了如何定义模型类,在这篇中将做一个汇总。让大家更加了解Django模型类。...: 当前选择数据库支持字段类型 渲染管理表单使用默认html控件 管理站点最低限度验证 Django 会为表创建自动增长主键列,每个模型只能有一个主键列,如果使用选项设置某属性为主键列后...如果具有不同主键字段模型,它还可以提高您一致性。 模型字段属性及选项 模型类属性命名限制 不能python保留关键字。...primary_key 若为True,则该字段会成为模型主键字段,默认值False。 unique 如果为True, 这个字段必须有唯一值,默认值False。...editable bool 类型,Admin里是否可编辑, help_text Admin 中提示帮助信息 upload_to 指文件上传到哪个位置 null 数据库范畴概念,blank 表单验证范畴

1.7K20

Django用户表创建(四)

字符串 用户输入密码 password_repeat 字符串 用户输入重复密码 email 字符串 用户输入邮箱地址 注:由于是post请求,向后端发起请求,需要附带csrf...:(django,根据代码类自动生成数据库表也叫--code first) ORM:Object Relational Mapping(关系对象映射) 类名对应------》数据库表名 类属性对应...映射到数据库date类型, 使用时候,可以设置DateField.auto_now每次保存对象,自动设置该字段为当前时间。...映射到数据库datetime类型, 使用时候,传递datetime.datetime()进去。...,用于其他模型继承,数据库迁移时不会创建ModelBase表 abstract = True 所以我们用户表model文件就是: from django.db import models

2.1K60

自定义Django认证系统技术方案

配置AUTHENTICATION_BACKENDS为自定义认证后端,其本质Python class,调用django.contrib.auth.authenticate()时会进行遍历: def...替换User模型 新版Django推荐做法,如果不想用默认User模型,那么就把它替换掉。...Django除了User模型,还有2个抽象模型AbstractUser和AbstractBaseUser,从源码可以看到它们继承关系: class User(AbstractUser):...这是因为一般继承有2个用途,一继承父类属性和方法,并做出自己改变或扩展,实现代码重用。但是这种方式会导致子类也包含了父类实现代码,代码强耦合,所以实践不会这么做。...参考AbstractUser实现: REQUIRED_FIELDS = ['email'] 这表示email必填使用createsuperuser命令,会提示必须输入。

1.1K10

Django(60)Django内置User模型源码分析及自定义User

大家好,又见面了,我你们朋友全栈君。 前言 Django为我们提供了内置User模型,不需要我们再额外定义用户模型,建立用户体系了。...它完整路径django.contrib.auth.models.User。...User模型源码分析 class User(AbstractUser): """ Django 身份验证系统用户由该模型表示 需要用户名和密码。...USERNAME_FIELD = 'username' # 一个字段名列表,用于通过createsuperuser管理命令创建一个用户提示。...继承自AbstractUser   对于authenticate不满意,并且不想要修改原来User对象上一些字段,但是想要增加一些字段,那么这时候可以直接继承django.contrib.auth.models.AbstractUser

1.5K20

37.Django1.11.6文档

你编写完基类之后, Meta类设置 abstract=True , 这个模型就不会被用来创建任何数据表。 取而代之它被用来作为一个其他model基类,它字段将被加入那些子类。...Django 提供F表达式 来允许这样比较。 F() 返回实例用作查询内部对模型字段引用。 这些引用可以用于查询filter 来比较相同模型实例上不同字段之间值比较。...像模型字段help_text一样,此值不会以自动生成形式进行HTML转义。 下面一个完整示例,Form为它两个字段实现了help_text。... 接口,具有下面几个不同点: id 永远为None。...它行为与可调用对象几乎相同这时self 模型实例。

24.2K80

11.寻光集后台管理系统-产品信息(后端)

从需求分析可以看出,业务基本上围绕着「产品」 订单伴手礼由多个产品组成 库存入库和出库也是某一个产品 产品应用 创建产品应用 python -m manage.py startapp...product 将新建product文件夹移动到apps文件夹下 注册产品应用 backend/LightSeeking/settings.pyINSTALLED_APPS中注册新建「产品」...'users.apps.UsersConfig', 'product.apps.ProductConfig', ] 编写产品表结构 编写通用表结构 全部业务相关表中有几个通用字段 主键...self.product_id 数据迁移 python manage.py makemigrations python manage.py migrate 查看表结构 产品序列化器 创建时间这个字段新建时候不需要暴露...,只有查询时候才用到,所以使用read_only 逻辑删除字段内部使用,对外删除了就不可见了,所以暴露字段时候排除is_delete from rest_framework import serializers

36210

测试开发进阶(二十七)

='所属项目', label='所属项目', queryset=Projects.objects.all()) 数据库模型外键字段默认会生产PrimaryKeyRelatedField序列化器字段...反向指定 父表默认不会生产关联字段(从表),可以手动指定,字段名默认为子表模型类名「小写_set」 projects.serializer.ProjectModelSerializer添加 interfaces_set...优化视图-请求 from rest_framework.views import APIView 视图继承 APIView之后,请求实例方法第二个参数 request为 Request对象,Django...Request 对DjangoHttpRequest进行拓展 根据请求头中Content-Type自动进行解析 无论前端发送那种格式数据,都可以以相同方式读取 request.data 类似于Django...GenericAPIView from rest_framework.generics import GenericAPIView 视图类中指定过滤引擎 指定需要排序字段 指定查询集 指定模型序列化器

57820

Django ORM 知识概要

Djangomigrations数据表更改数据库记录 字段 常用字段 自增长字段 models.AutoField() models.BigAutoField() 二进制数据 models.BinaryField...related_name='name' 反向查询时候可能会用到 on_delete=value value值 CASCADE:删除引用对象,也删除引用它对象 PROTECT:禁止删除引用对象...,Meta类字段如下: db_table ordering 列表或者元组形式 verbose_name 别名 verbose_name_plural 别名复数 abstract 不同步到数据库,只是用于被别的类继承...permissions 定义权限 managed 是否按照Django规则管理模型类 默认True unique_together=()/((),()) 对应MySQL联合唯一约束 app_label...删除对应模型类代码 删除migrationd文件夹下面的模型类 删除Djangomigrations表对应记录 删除数据库表 导入数据 Django shell 导入数据 引入模型 调用模型对象

1.8K20
领券