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

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

,比如我们学过的flask,里面的sqlalchemy就是这样一个优秀的模块,通过它可以快速和数据库建立通道,从而使得web编程更为高效,本文主要讲解django的模型。...二、模型的定义 模型可以定义储存数据的字段和值,比如我们在进行表单提交的时候,一些注册信息就可以利用模型来进行管理,然后统一提交到数据库中。简单来说,模型是与数据库有关的操作集合。...注:数据参考来源w3cschool 上面的字段很容易让人想起数据库中的数据类型,所以这些字段也就会有约束,常用的约束如下: null:字段是否可以为空 blank:是否允许用户输入为空 db_column...db_constraint=True # 是否在数据库中创建外键约束 parent_link=False # 在Admin中是否显示关联数据 2.多对多 多对多的表...=None # 自定义第三张表时,使用字段用于指定关系表中那些字段做多对多关系表 db_constraint=True # 是否在数据库中创建外键约束

2.1K00

Django学习之八:forms组件【对

关于校验方面,要明白的点: 对于绑定了数据的form对象,可以进行校验其绑定的数据是否匹配form定义的字段的类型和其它约束。...Form对象这是一个表单对象,通过该对象来操纵表单处理的过程,如校验表单字段,渲染表单字段。主要就对这两方面进行操纵。...但是要注意对应数据库的新增和修改操作,在save时是有不同逻辑的,你自己想想也是,如果是提交的数据和库中存量的数据有约束冲突,那必须解决这个冲突;至于新增就简单了直接插入insert就可以了。...这个字段会将用户表单中填入的字符串,转化为date对象。(用户的键入只能是字符串形式)。 这个转化过程肯定也是要有依据的,得按照依据规则来,不可能用户随便输入什么字符都能转换换成date对象是吧。...提供了这些格式,用户输入的时间字符串,就需要按照列表中的格式化提供时间字符串。同时,绑定了值的渲染到页面也是按照其中的格式来的。

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

    Django学习-第十三讲(下):表单(一)forms.form、forms.modelform

    Django中的表单 Django中的表单丰富了传统的HTML语言中的表单。在Django中的表单,主要做以下两件事 渲染表单模板。 表单验证数据是否合法。...2.3. django 表单自定义验证 有时候对一个字段验证,不是一个长度,一个正则表达式能够写清楚的,还需要一些其他复杂的逻辑,那么我们可以对某个字段,进行自定义的验证。...比如在注册的表单验证中,我们想要验证手机号码是否已经被注册过了,那么这时候就需要在数据库中进行判断才知道。...比如要验证用户表中手机号码之前是否在数据库中存在,那么可以通过以下代码实现: class MyForm(forms.Form): telephone = forms.CharField(validators...比如表单上验证的字段没有包含模型中所有的字段,这时候就可以先创建对象,再根据填充其他字段,把所有字段的值都补充完成后,再保存到数据库中。

    3.3K40

    Python:Django框架

    中,视图(view)对 WEB 请求进行回应,视图就是一个 Python 函数,被定义在 views.py 中 视图接收 reqeust 对象作为第一个参数,包含了请求的信息 from django.http...Field 选项 选项 描述 null boolean 值,默认为false。TURE=将NULL空值存储到数据库中 blank boolean 值,该字段是否可以为空。如果为假,则必须有值。...choices 元组值,一个用来选择值的2维元组。第一个值是实际存储的值,第二个用来方便进行选择。...managed = False 是否按照django既定的规则来管理模型类 unique_together = (‘address’, ‘note’) 联合唯一键,约束 app_label = ‘xxx...default 设置默认值 unique 值是否为唯一的 Not null 不能为空 foreign key 指定关键表的外键 mysql> use my_db #使用my_db数据库 Database

    4.4K40

    Django 学习笔记之模型高级用法(上)

    IntegerField 在 Django 所有支持的数据库中,合法取值范围是 -2147483648 到 2147483647。...因此,该字段在数据库中其实是一个字符串类型,默认最大长度100,可以通过max_length参数自定义。...2.1 ForeignKey 1) on_delete 在 Django 2.0 中,设置外键时需要添加一个 on_delete选项。外键本身涉及到两个表的数据,况且外键在数据库中是有约束行为。...2)limit_choices_to 该参数用于限制外键所能关联的对象,只能用于 Django 的 ModelForm(Django的表单模块)和 admin 后台,对其它场合无限制功能。...如果用户没有定义该选项, Django会自动将自动创建,内容是该字段属性名中的下划线转换为空格的结果。

    2K30

    37.Django1.11.6文档

    null纯粹是数据库范畴,指数据库中字段内容是否允许为空,而 blank 是表单数据输入验证范畴的。 如果一个字段的blank=True,表单的验证将允              许输入一个空值。 ...它在Django admin层面使用,在数据库层上进行数据约束(比如,在 CREATE TABLE 语句中包含 UNIQUE语句)。...在模型实例不包含数据的情况下,在模板中对它做处理很少有什么用处。 但是渲染一个未填充的表单却非常有意义 —— 我们希望用户去填充它。 所以当我们在视图中处理模型实例时,我们一般从数据库中获取它。...>不会出现在HTML表单提交的数据中,因此用户是否提交了值是未知的。...您必须确定通过搜索方法实现的查询集更改是否可能在结果中引入重复项,并在返回值的第二个元素中返回True。

    24.4K80

    django_2

    学习课程 1.修改数据库 ① 在settings中的DATABASES中进行修改 ‘ENGINE’: ‘django.db.backends.mysql’, ’NAME‘ : 数据库名字 ’USER‘:...FileField的所有属性和方法,但对上传的对象进行校验,确保它是个有效的image 上两个字段依赖pillow 字段选项 ·概述 ·通过字段选项,可以实现对字段的约束 ·在字段对象时通过关键字参数指定..., 这个字段在表中必须有唯一值 关系 ·分类 ·ForeignKey:一对多,将字段定义在多的端中 ·ManyToManyField:多对多,将字段定义在两端中 ·OneToOneField...,可以实现对字段的约束 ·在字段对象时通过关键字参数指定 ·null ·如果为True,Django 将空值以NULL 存储到数据库中,默认值是 False ·blank...·unique ·如果为 True, 这个字段在表中必须有唯一值 关系 ·分类 ·ForeignKey:一对多,将字段定义在多的端中 ·ManyToManyField

    3.6K30

    Django学习笔记之Django Form表单详解

    知识预览 构建一个表单 在Django 中构建一个表单 Django Form 类详解 使用表单模板 回到顶部 构建一个表单 假设你想在你的网站上创建一个简单的表单,以获得用户的名字。...我们可能想使用非常复杂的字段,以允许用户做类似从日历中挑选日期这样的事情,等等。 这个时候,让Django 来为我们完成大部分工作是很容易的。...so,两个突出优点:     1 form表单提交时,数据出现错误,返回的页面中仍可以保留之前输入的数据。    ...绑定的表单具有提交的数据,因此可以用来检验数据是否合法。如果渲染一个不合法的绑定的表单,它将包含内联的错误信息,告诉用户如何纠正数据。...来分拆表单的字段;如果我们喜欢,我们可以手工来做(例如,这样允许重新对字段排序)。

    4.6K10

    Django 基础快速入门

    Django 项目,那么此时你输入对应的 us 后则会执行绑定的处理方法跳转到静态 us.html : 五、静态模板中的文件引入 在 Django 的 html 文件中若要引入静态文件,需要在起 app...此时我们刷新页面,当前页面如下: 若页面加载不了图片,请检查路径是否输入正确以及是否清理了缓存。...处理方法前端传值与读取 在进行开发的过程中,往往需要处理方法往前端进行传值,若此时在 us 方法中添加如下数据: roles = ["CEO", "CTO"] uinfo = {"name": "1_.../p> 保存页面后刷新预览,显示结果如下: 当然,这样单独 keys 和 values 分开显示并不是很方便对应值的含义,在此通过 for 循环可一次性的对字典的 items 属性进行变量,可同时得到... {% endif %} 以上代码中可以得知 endif 为 if 判断结束,通过 elif 对多个条件进行判断,并且有一个最终的 else 对其进行判断之外的逻辑执行。

    1.7K20

    Django的用户表创建(四)

    首先进行基础的分析工作 判断用户名是否为空,是否已注册 判断邮箱是否为空,是否已注册 判断密码是否为空,格式是否正确 一般的注册操作还会有确认密码的输入,所以我们会在前端中增加一列。...字符串 是 用户输入的密码 password_repeat 字符串 是 用户输入的重复密码 email 字符串 是 用户输入的邮箱地址 注:由于是post请求,在向后端发起请求时,需要附带csrf...但是写了这些还不够的,因为用户名,密码,邮箱等都需要进行一定的约束,id一般是作为主键 知道了这个之后,就需要想办法解决了,但是受限于我的编码经验,所以我选择借鉴django大佬的代码。...unique: 指定是否唯一。 null: 指定是否为空,默认为False。 blank: 等于True时form表单验证时可以为空,默认为False。 default: 设置默认值。...数据库迁移 可以打开数据库可视化工具查看 ? 数据库展示 以上就完成了用户表的创建,不过里面的一些约束条件什么的感觉还是有点问题,但是应该不影响正常的使用(无法应对破坏性的测试)。

    2.2K60

    Django Form的使用

    ModelForm 比较简单,它适用于:当你创建的表单内容与某个 Model 内容很相似的情况。如上面文档介绍的一样 在 Form 类中,clean 方法可以在做表单验证,它是一个总的验证方法。...是有特殊规律的,我们可以通过这些 id 进行一些 js 操作 问题总结 在这次项目需求中,我主要遇到的问题是,有几个表单页面,后台使用同一张表去做存储,但是每个页面有许多变化的元素,如果为了存储这些可变的值...所以我采用的解决办法是提取公共的元素,其他可变的元素用了一个json字段存在数据库中。 而这样导致的问题就是,不能使用 ModelForm ,我选择了使用普通的 forms.Form 。...这样遇到了一些问题,总结如下: forms.Form 的初始化 有两种初始化方式: # 第一种方式: # 初始化一个空的 form 表单,同时绑定页面上的表单输入值,即能接受页面上的输入值 # 能接受页面上的输入值...所以表单初始化的时候,也没有办法进行赋值。 解决思路如下: 在表单中新开一个字段,用来存储上传后的图片链接,当图片未上传时,整个 div 隐藏,当图片有值时,整个 div 展示。

    2.3K20

    Django ORM 知识概要

    Django中带的migrations数据表中更改数据库记录 字段 常用的字段 自增长字段 models.AutoField() models.BigAutoField() 二进制数据 models.BinaryField...permissions 定义权限 managed 是否按照Django规则管理模型类 默认是True unique_together=()/((),()) 对应MySQL中的联合唯一约束 app_label...指定模型属于哪个应用(如果在settings里面已经注册过应用的话,就不用写这个字段了) db_tablespace 定义数据库表空间的名字 Django 数据表操作 更改数据表 删除数据库表步骤...删除对应的模型类代码 删除migrationd文件夹下面的模型类 删除Django的migrations表中对应的记录 删除数据库表 导入数据 Django shell 导入数据 引入模型 调用模型对象的...,统计个数,聚合 aggregate() 是对这个数据表中的数据进行统计 自定义聚合查询 F对象和Q对象 F对象:操作字段的数据 Q对象:结合 AND , OR ,NOT, | , ~ , & 实现复杂的查询

    1.8K20

    注册

    用户注册就是创建用户对象,将用户的个人信息保存到数据库里。回顾一下 Django 的 MVT 经典开发流程,对用户注册功能来说,首先创建用户模型(M),这一步我们已经完成了。...好在表单实际上就是一个 Python 类,因此我们可以继承它,对它做一点小小的修改就可以了。...如果数据合法,就新建一个用户对象,将用户的数据保存到数据库,否则就将错误信息返回给用户,提示用户对提交的信息进行修改。...image.png 你可以尝试注册一个用户,或者尝试故意输错一些信息,看看表单渲染的错误信息是什么样的,比如我故意输入两次不同的密码,得到一个错误信息提示: image.png 在 Admin 后台查看用户是否注册成功...不过没有关系,我么你现在只关心用户是否注册成功。那么怎么查看用户是否已经注册成功呢?可以去 Django Admin 后台看看是否有用户新注册的数据。

    9.1K60

    django 字段类型_access的数据库类型是

    默认情况下,BinaryField设置editable为False,在这种情况下,他不能包含在ModelForm中,在django2.1中进行了修改:旧版本不允许设置editable为True。...有两个可选参数: upload_to:设置上传目录和文件名的方法,并且可以通过两种方法进行设置。将参数附加到MEDIA_ROOT路径中,已形成本地文件系统上将存储上传文件的位置。...**注意:**在模型中使用FileField或ImageField时,需要执行以下几个步骤: l 在settings.py中定义MEDIA_ROOT为django设置存储上载文件的目录的完整路径(这些文件并未直接存储在数据库中...l 存储在数据库中的所有文件都是该文件的路径(相对于MEDIA_ROOT)。如果ImageField调用了,则mug_shot可以使用来获取摸板中图像的绝对路径。...当删除由a引用的对象时,Django将模拟on_delete参数指定的SQL约束的行为。

    3.9K30

    ​第 07 篇:创作后台开启,请开始你的表演!

    然后在相关的地方输入一些测试用的内容,增加完后点击保存,这样文章就添加完毕了,你也可以多添加几篇看看效果。注意每篇文章必须有一个分类,在添加文章时你可以选择已有分类。...然后就是修改 post 的表单的 label,label 由定义在 model 中的 Field 名转换二来,所以在 Field 中修改。...文章的创建时间和修改时间应该根据当前时间自动生成,而现在是由人工填写,还有就是文章的作者应该自动填充为后台管理员用户,那么这些自动填充数据的字段就不需要在新增文章的表单中出现了。...这里 default 既可以指定为一个常量值,也可以指定为一个可调用(callable)对象,我们指定 timezone.now 函数,这样如果没有指定 created_time 的值,django 就会将其指定为...通过覆写这个方法,在 model 被 save 到数据库前指定 modified_time 的值为当前时间不就可以了?

    1.1K20

    关于“Python”的核心知识点整理大全55

    在自己的项目中编 写这样的查询时,先在Django shell中进行尝试大有裨益。相比于编写视图和模板,再在 浏览器中检查结果,在shell中执行代码可更快地获得反馈。 3....在Django模板中,竖线(|)表示模板过滤器——对模板变量的值 进行修改的函数。过滤器date: 'M d, Y H:i'以这样的格式显示时间戳:January 1, 2015 23:00。...然 后,我们再对这些有效信息进行处理,并将其保存到数据库的合适地方。这些工作很多都是由 Django自动完成的。...根据请求的类型,我们可以确定用户请求 的是空表单(GET请求)还是要求对填写好的表单进行处理(POST请求)。 1处的测试确定请求方法是GET还是POST。...由于实例化TopicForm时我们没有指定任何实参,Django将创建一个可供用户 填写的空表单。 如果请求方法为POST,将执行else代码块,对提交的表单数据进行处理。

    16610

    django 快速入门

    创建app 在Django项目中,app表示更小的一个功能单位,比方说在一个博客管理系统中,对博客的增删查改等功能就应该聚合在一个app中。进入项目目录中,用startapp命令创建app。 cd ....如果使用过其他ORM框架比如Hibernate之类的话,对这种结构应该非常熟悉。我们在定义模型的时候指定每一个字段的名字、长度、是否唯一等信息。...值得注意的是,如果需要的值只可能是几个固定值,可以定义一个元组(该元组有一对值构成,第一个值是实际存在数据库中的值,第二个是给人类显示的友好可读值),然后传入choices参数。...models.ForeignKey用来指定外键约束,还有一些其他的对应关系例如多对多、一对一等就不介绍了。...你好,张三 获取表单参数 在页面中添加如下一个表单。

    1.9K60

    Django模型model

    : 根据对象的类型生成数据库表结构 将对象、列表的操作,转换为sql语句 将sql查询到的结果转换为对象、列表 Django中的模型包含存储数据的字段和约束,对应着数据库中唯一的表 ORM.png 2....定义模型类 在模型中定义属性,会生成数据库表中的字段 django根据属性的类型确定以下信息: 当前选择的数据库支持字段的类型 渲染管理表单时使用的默认html控件 在管理站点最低限度的验证 django...模型类中字段选项 通过字段选项,可以实现对字段的约束 在字段对象时通过关键字参数指定 null:如果为True,Django 将空值以NULL 存储到数据库中,默认值是 False blank:如果为True...模型类之间关系 关系的类型包括 ForeignKey:一对多,将字段定义在多的端中 ManyToManyField:多对多,将字段定义在两端中 OneToOneField:一对一,将字段定义在任意一端中...不会对数据库进行读写操作 在管理器的方法中,可以通过self.model来得到它所属的模型类 调用save()方法才与数据库交互,将对象保存到数据库中 使用关键字参数构造模型对象很麻烦,推荐使用下面的两种之式

    15310

    Django 学习笔记之表单

    举个栗子,用户使用浏览器访问一个页面,在页面的搜索框中输入图书的名称,想获取所有销售该图书的商店。Web 站点需要获取图书名称的信息作为数据库查询条件,所以将数据拦截并获取图书的名称。...然后通关查询数据库,最后将查询到的所有商店信息返回给浏览器进行渲染显示。另外,博客系统中的评论模块也是这个原理。因此,在一些站点上会爆出 XSS 漏洞。...原因可能是编码者没有对用户提交的数据进行过滤或者过滤不严,直接存储到数据库中。 2 HTML 表单 这部分是给不熟悉 HTML 表单同学准备的,如果你已经掌握这部分知识。可以选择直接跳过。...**因为页面是通过 name 属性中的值来获取用户输入的内容的。以 GET 方式请求为例,有个单行输入框定义 name="q"。当你在输入框中填写值 moneky 然后提交。...3.3 视图层的处理 在视图文件 view.py 中, 可以获取、过滤到用户提交的数据。

    2.6K30
    领券