Django基础——Model篇(三)】的更多相关文章

一 Django ORM中的概念 ORM —— 关系对象映射,是Object Relational Mapping的简写,是用来简化数据库操作的框架 Django ORM遵循Code Frist原则,即根据代码中定义的类来自动生成数据库表,对于ORM框架:  (1)自定义的类表示待创建数据库的表  (2)根据自定义类创建的对象obj表示数据库表中的一行数据  (3)obj.字段1.obj.字段2.....obj.字段n表示每一行数据中相应字段的值 ORM中的一对多.一对一以及多对多的概念及应用场…
一 Model连表关系 一对多:models.ForeignKey(其他表)    多对多:models.ManyToManyField(其他表)    一对一:models.OneToOneField(其他表)    一般在数据库中创建外键关联时,就有一对多或者多对多,而一对一是Django独有的. 应用场景:    一对多:当一张表中创建一行数据时,有一个单选的下拉框(下拉框中内容,可被重复选择)    例如:创建用户信息时,需要选择一个用户类型:普通用户.金牌用户.铂金用户等.      …
到目前为止,当程序涉及到数据库相关操作时,我们一般都会这么操作:    (1)创建数据库,设计表结构和字段    (2)使用MySQLdb来连接数据库,并编写数据访问层代码    (3)业务逻辑层去调用数据访问层,执行数据库操作 import MySQLdb def GetList(sql): db = MySQLdb.connect(user=', host='localhost') cursor = db.cursor() cursor.execute(sql) data = cursor.…
目录 1.Django MTV框架简介 2.基础命令创建项目的配置说明 3.前后端交互案例 4.基于数据库实现数据交互增删改查 Django简介 Django框架的设计模式借鉴了MVC的思想,和MVC不同的点是它拆分的三部分,分别为:(Model)模型. (Template)模板.以及(View)视图 MVC和MTV知识点补充: MVC是三个单词的首字母缩写,它们是Model模型.View视图 和Controller控制. 1)最上面的一层,是直接面向最终用户的"视图层"(View).…
一.数据库配置 django 默认支持sqlite.mysql.oracle.postgresql数据库,像db2和sqlserver之类的数据库需要第三方的支持,具体详见https://docs.djangoproject.com/en/1.10/ref/databases/ 一.环境准备 1.创建项目 1.使用命令创建项目和应用 创建项目:django-admin startprojcet xxx 创建应用:python manage.py startapp app01 启动应用:pytho…
注意:使用原生sql的方式主要目的是解决一些很复杂的sql不能用ORM的方式写出的问题. 一.extra:结果集修改器-一种提供额外查询参数的机制 二.执行原始sql并返回模型实例 三.直接执行自定义SQL:这种方式完全不依赖model,前面两种还是要依赖model 1.使用extra:查询人民邮电出版社出版并且价格大于50元的书籍 >>> Book.objects.filter(publisher__name='人民邮电出版社').extra(where=['price>50']…
一.增加 create和save方法 实例: 1.增加一条作者记录 >>> from hello.models import * >>> Author.objects.create(name='胡大海') >>> AuthorDetail.objects.create(sex=False,email='333@qq.com',address='北京XX',birthday='1988-1-2',author_id=1) 2.增加一条出版社记录 >…
一.创建数据模型. 实例: 作者模型:一个作者有姓名. 作者详情模型:把作者的详情放到详情表,包含性别.email 地址和出生日期,作者详情模型与作者模型之间是一对一的关系(OneToOneField) 出版商模型:出版商有名称,地址,所在城市,省,国家,网址. 书籍模型:书籍有书名,出版日期,价格.一本书可能会有多个作者,一个作者也可以写多本书,所以作者与书籍的关系是多对多的关联关系(many-to-many),一本书只应该由一个出版商出版,所以出版商和书籍是一对多的关联关系(one-to-m…
Django框架基础-03数据库新增数据    1.save⽅法        >>> from datetime import date        >>> from booktest.models import BookInfo, HeroInfo        >>> book = BookInfo(        ... btitle='⻄游记',        ... bpub_date=date(1989,1,1),        ...…
1. 写views views.py代码块 1.在前端以/article/{{ article.id }}这种方式请求后台, 参数配置在urls.py中path('category/<int:id>',views.category),#<int:id>:配置参数,id必须和views里的方法的变量要一致,参数类型支持int,str等 在view方法中定义变量,变量名和urls.py中一致 2.在前端以url?key=value 在views中用request.GET.get('ke…
一.Django介绍 flask,FastApi是轻量级服务端开发框架 Django是重量级服务端开发框架 ORM:封装了数据库操作 form:校验请求数据 安装Django: pip install django==2.1.7  #指定版本安装,默认是安装最新版本 注意:最新版本的Django对mysql版本也有要求 二.Django命令 1.创建项目命令:django-admin startproject test_django 2.启动项目命令: python manage.py runs…
接着前面的例子,举例聚集查询和分组查询例子如下: 1.查询人民邮电出版社出了多少本书 >>> Book.objects.filter(publisher__name='人民邮电出版社').count() >>> from django.db.models import * >>> Book.objects.filter(publisher__name='人民邮电出版社').aggregate(Count('title')) 2.查询陈吉出的书总价是多少…
django.db.models.query.QuerySet QuerySet特点: 1.可迭代 2.可切片 查询相关API 1.get(**kwargs):返回与所给的筛选条件相匹配的对象,返回结果有且只有一个.如果符合筛选条件的对象超过一个,就会抛出MultipleObjectsReturned异常,如果没有找到符合筛选条件的对象,就会抛出DoesNotExist异常. 2.all():查询所有结果的对象集. 3.filter(**kwargs):它包含了与所给的筛选条件相匹配的对象集.…
1.Django自带的过滤器filter views.py中代码 def template_tags(request): import datetime content = '三胖content三胖contentSBcontentsbcontentcontentcontentcontentcontent' title = 'tiTLe' stus = ['xiaohei', 'xiaobai', 'lhy'] info = {"money":9999} cur_date = datet…
1.新增(类似数据库操作的insert) # 新增 #方式一: models.Category.objects.create(name='MySQL') #方式二: c = models.Category(name='Oracle') c.save() models.Article.objects.create( title='orm学习', content='orm学习, content', category_id=2 ) # 知道外键,id category = models.Categor…
一.上下文管理器 在views中重复使用的代码,可以通过上下文管理器(在setting.py文件中的TEMPLATES中配置)中实现,减少代码冗余 上下文管理器的处理流程如下: 1.先走完views里面的代码,将结果返回给前端 2.然后再将上下文的结果返回给前端 3.上下文只有在返回的是html的时候,才会走上下文处理器 当views和上下文处理器中都定义了的变量值,那么HTML页面中以views中定义的为准. 1.1 上下文context_process.py代码 from . import…
1.使用model.py来定义表结构,使用命令同步到数据库 python manage.py makemigrations #生成表结构(py) python manage.py makemigrations user #生成表结构(py)指定子项目 python manage.py migrate #同步到数据库 插入测试数据,可以自己写页面来插入数据 也可以使用Django自带的后台管理,来操作数据表 2.创建用户 python manage.py createsuperuser 3.重启D…
一.认识一个目录 目录名:migrations 作用:用来存放通过makemigrations命令生成的数据库脚本,不熟悉的情况下,里面生成的脚本不要轻易修改.app目录下必须要有migrations的目录且该目录下必须要有__init__.py才能正常的使用数据库同步的功能. 二.认识一张数据表(django_migrations) 表中的字段: app:app名字 name:脚本的文件名称 applied:脚本执行的时间 三.数据库相关的命令 flush:清空数据库-恢复数据库到最初状态 m…
django 默认支持sqlite.mysql.oracle.postgresql数据库,像db2和sqlserver之类的数据库需要第三方的支持,具体详见: https://docs.djangoproject.com/en/1.10/ref/databases/ 环境准备 使用命令行创建hello_django 项目与hello app django-admin startproject hello_django cd hello_django django-admin startapp h…
1.导入Django自带的分页类 from django.core.paginator import Paginator 2.分页类的使用 def index(request): # return HttpResponse('hello django!') limit = request.GET.get('limit',5) page_number = request.GET.get('page',1) articles = models.Article.objects.all() page =…
1.models字段类型 AutoField():一个IntegerField,根据可用ID自动递增.如果没指定主键,就创建它自动设置为主键. IntegerField():一个整数: FloatField:浮点型 CharField(max_length = 20):字符串字段,字段最大长度为20 DateField(verbose_name='创建时间',auto_now=False, auto_now_add=False):日期:参数auto_now:每次保存对象时,自动设置该字段为当前时…
接着前面的例子,举例多表查询实例如下: 1.查询作战的所有完整信息. >>> AuthorDetail.objects.values('sex','email','address','birthday','author__name') 2.查询<持续集成实践>这本书的作者姓名,还有出版社的名字 >>> Book.objects.filter(title='持续集成实践').values('authors__name','publisher__name') 3…
目录:Django其他篇 01:Django基础篇 02:Django进阶篇 03:Django数据库操作--->Model 04: Form 验证用户数据 & 生成html 05:ModelForm 数据验证 & 生成html & 数据库操作 06: Django Admin 07: Django 学习补充 目录: django参考网站 1.1 Web框架本质----socket 1.2 MVC和MTV架构 1.3 Django常用命令 1.4 配置settings.py文…
Django框架第一篇基础 一个小问题: 什么是根目录:就是没有路径,只有域名..url(r'^$') 补充一张关于wsgiref模块的图片 一.MTV模型 Django的MTV分别代表: Model(模型):和数据库相关的,负责业务对象与数据库的对象(ORM) Template(模板):放所有的html文件 模板语法:目的是将白变量(数据库的内容)如何巧妙的嵌入到html页面中 View(视图):负责业务逻辑,并在适当的时候调用Model和Template 此外,Django还有一个URL分发…
一.Django基础 Django 是用Python开发的一个免费开源的Web框架,可以用于快速搭建高性能,优雅的网站! Django的特点: 强大的数据库功能:拥有强大的数据库操作接口(QuerySet API),也能执行原生SQL 自带强大后台:网站拥有一个强大的后台,轻松管理内容 优雅的网址:用正则匹配网址,传递到对应函数,随意定义. 模版系统:易扩展的模版系统,设计简易,代码,样式 分开设计,更容易管理. 缓存系统:与memcached,redis等缓存系统联用,更出色的表现,更快的加载…
一.Django基础 Django 是用Python开发的一个免费开源的Web框架,可以用于快速搭建高性能,优雅的网站! Django的特点: 强大的数据库功能:拥有强大的数据库操作接口(QuerySet API),也能执行原生SQL 自带强大后台:网站拥有一个强大的后台,轻松管理内容 优雅的网址:用正则匹配网址,传递到对应函数,随意定义. 模版系统:易扩展的模版系统,设计简易,代码,样式 分开设计,更容易管理. 缓存系统:与memcached,redis等缓存系统联用,更出色的表现,更快的加载…
Django基础十之Form和ModelForm组件 本节目录 一 Form介绍 二 Form常用字段和插件 三 From所有内置字段 四 字段校验 五 Hook钩子方法 六 进阶补充 七 ModelForm 八 xxx 一 Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否输入,输入的长度和格式等正不正确.如果用户输入的内容有错误就需要在页面上相…
本节内容一览表: Django基础:http://www.ziqiangxuetang.com/django/django-tutorial.html 一.Django简介 Django文件介绍:http://www.cnblogs.com/geekmao/p/7569950.html 1.web框架介绍 具体介绍Django之前,必须先介绍WEB框架等概念. web框架: 别人已经设定好的一个web网站模板,你学习它的规则,然后“填空”或“修改”成你自己需要的样子. 一般web框架的架构是这样…
Django之Model操作   一.字段 AutoField(Field) - int自增列,必须填入参数 primary_key=True BigAutoField(AutoField) - bigint自增列,必须填入参数 primary_key=True 注:当model中如果没有自增列,则自动会创建一个列名为id的列 from django.db import models class UserInfo(models.Model): # 自动创建一个列名为id的且为自增的整数列 use…
疯狂暑期学习 Django学习笔记(三)-- 型号 model 參考:<The Django Book> 第5章 1.setting.py 配置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.', # 用什么数据库管理系统 'NAME': '', # 数据库名称,假设用sqlite.要写完整路径 'USER': '', # 假设用sqlite,这个不用写 'PASSWORD': '', # 假设用sqlite,这个不用写 'H…