DoesNotExist异常的基类;对ObjectDoesNotExist的try/except会为所有模型捕获到所有DoesNotExist 异常。
总结:ObjectDoesNotExist 和 DoesNotExist 表达的意思是相同的,只是写法不同,一个需要导入,一个是model的属性,如何使用看大家的个人习惯就好。
返回按照查询参数匹配到的单个对象,若匹配到的对象个数不只一个的话,会触发MultipleObjectsReturned异常,若根据参数匹配不到对象的时候,会触发DoesNotExist异常。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
使用 Python 进行开发的一大优势是交互式 shell。我用它所有的时间。这是一种快速尝试和试验库和 API 的方法。
完成了项目的模型层,最需要思考的是数据库该如何设计?这次的电商项目,从用户到下单,都会有哪些操作呢?当看到页面的那些商品信息或是活动促销信息,有考虑过它们之间的联系么?要是,商品的分类要像某宝或是某东,那样有二级和三级分类,这样又该怎么处理呢?如果每个功能的数据表都单独设计成和用户关联,那功能的不断扩展,会不会影响到整个数据库读写与查询呢?
Q对象可以对关键字参数进行封装,从而更好的应用多个查询,可以组合&(and)、|(or)、~(not)操作符。
django框架对orm层强大的shell api使得开发者可以轻松地开发和变更数据库表操作,真正符合了DRY(don’t repeat yourself)原则。我打算和朋友合写一个中文的django
defaults: 是由 (field, value) 对组成的字典,用于更新对象。
此时进入 shell, 我们可在 shell 中通过面向对象方式对数据库中的数据进行 CRUD 操作.
类的属性 objects:是Manager类型的对象,用于与数据库进行交互 当定义模型类时没有指定管理器,则Django会为模型类提供一个名为objects的管理器 支持明确指定模型类的管理器 class BookInfo(models.Model): ... books = models.Manager() 当为模型类指定管理器后,django不再为模型类生成名为objects的默认管理器 管理器Manager 管理器是Django的模型进行数据库的查询操作的接口,Django应用的每个模
year、month、day、week_day、hour、minute、second:对日期时间类型的属性进行运算。
天下难事必作於易。天下大事必作於细。是以圣人终不为大,故能成其大 ——老子《道德经》
以上运算符都区分大小写,在这些运算符前加上i表示不区分大小写,如iexact、icontains、istartswith、iendswith. 3) 空查询
在完成登录到用户提交订单,这一系列的类视图函数,会发现有大量的数据读写操作,像电商这类的项目,更多的是用户在浏览页面的次数比较多,所以在数据查询的场景中都会采用缓存,将用户第一次打开页面,到下一次重新浏览,这其间就可以提升用户打开页面的速度。
python3详细安装教程_超级小的大西瓜的博客-CSDN博客_python3安装
本教程上接 教程 第2部分 。我们将继续 开发 Web-poll 应用并且专注在创建公共界面 – “视图 (views )”。
HttpResponse对象 在django.http模块中定义了HttpResponse对象的API HttpRequest对象由Django自动创建,HttpResponse对象由程序员创建 不调用模板,直接返回数据 #coding=utf-8 from django.http import HttpResponse def index(request): return HttpResponse('你好') 调用模板 from django.http import HttpResponse f
(1)程序内部的接口:方法与方法、模块与模块之间的交互,程序内部抛出的接口,如登录发帖,发帖就必须要登录,如果不登录不能发帖,发帖和登录这两个模块之间就要有交互,就会抛出一个接口,进行内部系统调用。
由于Django是在一个快节奏的新闻编辑室环境下开发出来的,因此它被设计成让普通的网站开发工作简单而快 捷。以下简单介绍了如何用 Django 编写一个数据库驱动的Web应用程序。
在内部,创建、过滤、切片和传递一个QuerySet不会真实操作数据库,在你对查询集提交之前,不会发生任何实际的数据库操作。可以使用下列方法对QuerySet提交查询操作:
相关API 1.get(**kwargs) 解释:返回与筛选条件相匹配的Model对象,返回结果有且只有一个。 说明:如果符合条件的对象多于一个抛出MultipleObjectsReturned异常,如果没有找到抛出DoesNotExist异常 语法:ModelName.objects.get(itemName=itemNameValue) 例子:Author.objects.get(id=1) 2.all() 解释:查询所有结果(懒加载),当查询的时候并不真实发送sql语句,用的时候才会真的去查询 语法
完成了模型层,需要映射到数据库中,创建相应的表。在项目的 settings.py 文件中配置数据库,Django 有数据读写分离的配置方式。
例q1.filter(pub_date__gte=datetime.date.today())表示为时间 =now,q1.exclude(pub_date__gte=datetime.date.today())表示为<=now
目录[-] 本教程上接Django 1.10中文文档-第一个应用Part2-模型和管理站点。我们将继续开发网页投票这个应用,主要讲如何创建一个对用户开放的界面。 概览 视图是Django应用中的一“类”网页,它通常使用一个特定的函数提供服务,并且具有一个特定的模板。例如,在博客应用中,可能有以下视图: 博客首页 —— 显示最新发表的博客; 博客“详细”页面 —— 每博客的链接页面; 基于年份的归档页面 —— 显示特定年内所有月份发表过的博客; 基于月份的归档页面 —— 显示特定月份内
原教程说的比较抽象,这里简单认为视图就是views.py中的函数,用于处理数据并渲染网页。我们的投票应用中,需要下列几个视图:
Kubernetes(简称K8s)是一个用于管理容器化应用程序的开源平台。在K8s中,节点亲和度设置是一种调度分配策略,用于定义 Pod(一个或者多个容器的集合) 可以调度到哪些节点上以及基于怎样的规则分配 Pod 到各个节点。
简介 查询集表示从数据库中获取的对象集合 查询集可以含有零个、一个或多个过滤器 过滤器基于所给的参数限制查询的结果 从Sql的角度,查询集和select语句等价,过滤器像where和limit子句 接下来主要讨论如下知识点 查询集 字段查询:比较运算符,F对象,Q对象 查询集 在管理器上调用过滤器方法会返回查询集 查询集经过过滤器筛选后返回新的查询集,因此可以写成链式过滤 惰性执行:创建查询集不会带来任何数据库的访问,直到调用数据时,才会访问数据库 何时对查询集求值:迭代,序列化,与if合用 返回查
模型类如果未指明表名,Django默认以小写app应用名_小写模型类名为数据库表名。
在Django的官方文档中是这么定义视图的: "一类具有相同功能和模板的网页的集合",概念比较抽象,我们直接 拿比较简单常见论坛网站来举例,可能要求创建以下视图:
When I let go of what I am, I become what I might be.
每个字段有一些特有的参数,例如,CharField(和它的派生类)需要max_length 参数来指定 VARCHAR 数据库字段的大小
上一篇Django 2.1.7 模型 - 条件查询 F对象 Q对象 聚合查询讲述了关于Django模型的介绍F对象、Q对象、聚合查询等功能。
历史记录只需保存多个商品的sku_id即可,而且需要保持添加sku_id的顺序,所以采用redis中的列表来保存,redis的数据存储设计
继上篇django2.0入门教程第二节,介绍了对django2.0模型类models的操作,本篇主要讲视图views和模板template django的视图用于处理url请求,并将响应的数据传递到模板,最终浏览器将模板数据进行渲染显示,用户就得到了想要的结果 作为一个简易的投票系统, 除了index(主页), 还需要detail(详情页), results(结果页), vote(投票页) 这些视图。 增加视图:polls/views.py #_*_coding:utf8_*_ from django.sh
上篇笔记从零创建了一个django项目,一个项目肯定是由多个模块组成的,比方说一个电商项目,包括支付模块,商品展示模块,商家用户聊天模块等等,这些模块便可称之为一个应用。
django查询数据库的方法很多,不同的方法返回的结果也不太一样,本篇详细讲解关于查询的13个方法
用户在进入个人中心前,都需要判断用户是否登录。在加入购物车之前,判断商品是否存在。如果用户已登录,则保存购物车数据到redis中;操作redis,保存购物车数据,"cart_用户id": {"sku_1": 10, "sku_2": 11},先尝试从用户的购物车中获取这个商品的数量;如果购物车中不存在这个商品,则直接添加购物车记录,否则,需要进行数量的累计,再添加到购物车记录中。
reverse反解析 使用reverse函数,可以根据路由名称,返回具体的路径,如: from django.urls import reverse # 注意导包路径
select_for_update(nowait=False, skip_locked=False) #注意必须用在事务里面,至于如何开启事务,我们看下面的事务一节。
模型继承在 Django 中与普通类继承在 Python 中的工作方式几乎完全相同,但也仍应遵循本页开头的内容。这意味着其基类应该继承自 django.db.models.Model。
一般情况下,我们在写Django项目需要操作QuerySet时一些常用的方法已经满足我们日常大多数需求,比如get、filter、exclude、delete神马的感觉就已经无所不能了,但随着项目但业务逻辑越来越复杂,这几个方法可能就不能很好但满足我们了,所以这时候,最好的办法是神马??对,读文档!这里的读文档不是有业务需求时去查文档,而是要为了阅读文档而阅读文档。以下也是作为我的文档阅读笔记,我记下了一些我以后可能会用到或者一些技巧性提升的东西,好,不废话,正文开始: 首先,我们假设有以下两个model:
从零到一搭建一个属于自己的博客系统(弌):从零到一搭建一个属于自己的博客系统(弌)
最近发布代码的时候,遇到一个问题,发现Python中eval()函数的危险性.然而我还是个菜鸟,其中有一段代码是这样的。
auth模块是Django提供的标准权限管理系统,可以提供用户身份认证, 用户组和权限管理。auth可以和admin模块配合使用, 快速建立网站的管理系统。
ORM,即Object-Relational Mapping(对象关系映射),它的作用是在关系型数据库和业务实体对象之间作一个映射,这样,我们在具体的操作业务对象的时候,就不需要再去和复杂的SQL语句打交道,只需简单的操作对象的属性和方法。下面是一个示例。通过使用 ORM,我们只需要操作 Author 和 Blog 对象,而不用操作相关的数据库表。这里主要介绍一下 Django ORM 的相关使用。
领取专属 10元无门槛券
手把手带您无忧上云