创建项目

首先进入一个空目录,打开操作命令行,输入:

django-admin startproject 项目名称

建立数据库连接

进入项目目录打开settings.py文件,修改以下字段

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'test',
'USER': 'root',
'PASSWORD': 'root',
'HOST': '127.0.0.1',
'PORT': '3306'
}
}

生成应用

生成应用:进入命令行,输入以下命令

python manage.py startapp 应用名称

注册应用:打开settings.py,在INSTALLED_APPS里加入刚创建的应用

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'test'
]

定义模型db_index

字段类型

字段名称 字段释义
AutoField 一个根据实际ID自动增长的IntegerField,通常不指定
BooleanField true/false 字段,此字段的默认表单控制是CheckboxInput
NullBooleanField 支持null、true、false三种值
CharField(max_length=字符长度) 字符串,默认的表单样式是 TextInput
TextField 大文本字段,一般超过4000使用,默认的表单控件是Textarea
IntegerField 整数
DecimalField(max_digits=None, decimal_places=None) 使用python的Decimal实例表示的十进制浮
FloatField 用Python的float实例来表示的浮点数
DateField[auto_now=False, auto_now_add=False]) 使用Python的datetime.date实例表示的日期
TimeField 使用Python的datetime.time实例表示的时间,参数同DateField
DateTimeField 使用Python的datetime.datetime实例表示的日期和时间,参数同DateField
FileField 一个上传文件的字段
ImageField 继承了FileField的所有属性和方法,但对上传的对象进行校验,确保它是个有效的image

字段选项

名称 释义
null 如果为True,Django 将空值以NULL 存储到数据库中,默认值是 False
blank 如果为True,则该字段允许为空白,默认值是 False
db_column 字段的名称,如果未指定,则使用属性的名称
db_index 若值为 True, 则在表中会为此字段创建索引
default 默认值
primary_key 若为 True, 则该字段会成为模型的主键字段
unique 如果为 True, 这个字段在表中必须有唯一值

关系

名称 释义
ForeignKey 一对多,将字段定义在多的端中
ManyToManyField 多对多,将字段定义在两端中
OneToOneField 一对一,将字段定义在任意一端中

关系之间的访问

a:
字段一 b:
字段一
c = models.ForeignKey(a) a创建出的对象.c_set.all()
b创建出的对象.a.all()

元信息

# 在模型类中再定义一个名为Meta的类
class a(models.Model):
name = models.CharField(max_length = 20)
class Meta:
db_table = 'b' # 此处为定义当前表的名称
ordering = ['id'] # 对象的默认排序字段,字符串前加-表示倒序,不加表示正序(排序会增加数据库的开销)

生成迁移

python manage.py makemigrations 应用名称            # 生成迁移文件
python manage.py migrate # 生成迁移

模型查询

返回查询集的方法

  • all():查询符合条件的所有数据
  • filter():过滤数据
  • order_by():排序
  • values():返回一个字典

返回单个值的方法

  • get():返回单个满足条件的的对象

    • 如果未找到会引发"模型类.DoesNotExist"异常
    • 如果多条被返回,会引发"模型类.MultipleObjectsReturned"异常
  • count():返回当前查询的总条数
  • first():返回第一个对象
  • last():返回最后一个对象
  • exists():判断查询集中是否有数据,如果有则返回True

限制查询集

限制查询集类似于sql中的limit,具体用法为[0, 1].get()

字段查询

  • contains:是否包含,大小写敏感
filter(username__contains = 'ad')
  • startswith、endswith:以value开头或结尾,大小写敏感
filter(username__startwith='ad')
  • isnull、isnotnull:是否为null
filter(username__isnull=True)
  • in:是否包含在范围内
filter(pk__in = [1, 2, 3, 4])
  • gt、gte、lt、lte:大于、大于等于、小于、小于等于
  • year、month、day、week_day、hour、minute、second:对日期间类型的属性进行运算
filter(bpub_date__year=1980)
filter(bpub_date__gt=date(1980, 12, 31))
  • 跨关联关系的查询:处理join查询
# 语法:模型类名 <属性名> <比较>
filter(heroinfo__hcontent__contains='八')

聚合

包括Avg(平均数),Count(数量),Max(最大值),Min(最小值),Sum(求和)

from django.db.models import Max
maxDate = model.aggregate(Max('bpub_date'))

F对象

如果想要用模型字段A和字段B进行比较,可以使用F对象

from django.db.models import F

model.filter(bread__gte=F('bcommet'))
model.filter(bread__gte=F('bcommet') * 2)
model.filter(isDelete=F('heroinfo__isDelete'))

Q对象

想实现sql逻辑或的关系,使用Q对象

from django.db.models import Q

model.filter(Q(pk__lt=6) | Q(bcommet__gt=10))

python--Django从创建一个项目说起的更多相关文章

  1. Django 从0开始创建一个项目

    title: Django 从0开始创建一个项目 tags: Django --- Django 从0开始创建一个项目 创建Django工程及配置 创建工程:django-admin starproj ...

  2. 学习将码云账号和git连接,并且创建一个项目

    一顿操作猛如虎,哈哈 参考网址:https://git-scm.com/book/zh/v1/%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84-Git-%E7 ...

  3. kraken-ejs创建一个项目【学习札记】

    Keep in Touch. 保持联络. Who’s calling? 是哪一位? You did right. 你做得对. You set me up! 你出卖我! kraken-express-e ...

  4. Ionic-wechat项目边开发边学(一):环境搭建和创建一个项目

    之前学AngularJS,教程过了一遍觉得很简单,但真正写几个Demo就错误百出,一个小小的功能要折腾很久.所以这次学Ionic,准备以开发一个项目为切入点去学,那么问题来了,开发什么项目呢? 纠结了 ...

  5. Cordova之如何用命令行创建一个项目(完整示例)

    原文:Cordova之如何用命令行创建一个项目(完整示例) 1. 创建cordova项目 (注意:当第一次创建或编译项目的时候,可能系统会自动下载一些东西,需要一些时间.) 在某个目录下创建cordo ...

  6. Vue.js+vue-element搭建属于自己的后台管理模板:创建一个项目(四)

    Vue.js+vue-element搭建属于自己的后台管理模板:创建一个项目(四) 前言 本章主要讲解通过Vue CLI 脚手架构建工具创建一个项目,在学习Vue CLI之前我们需要先了解下webpa ...

  7. Gitlab创建一个项目(三)使用IntelliJ IDEA开发项目

    Gitlab创建一个项目 Gitlab创建一个项目(二)创建新用户以及分配项目 1.登陆到gitlab 2.点击项目名,获取http的URL 3.idea打开,选择git 4.设置项目路径以及本地保存 ...

  8. Gitlab创建一个项目(二)创建新用户以及分配项目

    Gitlab创建一个项目(一) 1.进入gitlab控制台 2.点击“新建用户” 3.点击“Edit”,创建初始密码 4.分配项目,首页进入项目 5.进入Members菜单 6.选择用户 7.赋予权限 ...

  9. Gitlab创建一个项目

    1.安装git yum install git 2.生成密钥文件:使用ssh-keygen生成密钥文件.ssh/id_rsa.pub ssh-keygen 执行过程中输入密码,以及确认密码,并可设置密 ...

  10. Python Web开发:使用Django框架创建HolleWorld项目

    开发环境搭建 Python环境安装 下载地址:https://www.python.org/downloads// Django安装 打开Windows CMD输入pip install django ...

随机推荐

  1. redis实现数据库(一)

    转:https://www.cnblogs.com/beiluowuzheng/p/9738159.html 服务器中的数据库 Redis服务器将所有数据库都保存在服务器状态redis.h/redis ...

  2. CUDA Pro Tip: Write Flexible Kernels with Grid-Stride Loops

    https://devblogs.nvidia.com/cuda-pro-tip-write-flexible-kernels-grid-stride-loops/ One of the most c ...

  3. ALSA driver---DPCM

    https://www.kernel.org/doc/html/v4.11/sound/soc/dpcm.html Description Dynamic PCM allows an ALSA PCM ...

  4. 网络安全从入门到精通(第二章-3)后端基础SQL— MySQL高级查询与子查询

    本文内容: MySQL的基础查询语句 链接查询 联合查询 子查询 渗透测试常用函数 1,MySQL基础查询语句: select * from 表 order  by ASC/DESC; ASC:从小到 ...

  5. 使用WireShark进行网络流量安全分析

    WireShark的过滤规则 伯克利包过滤(BPF)(应用在wireshark的捕获过滤器上) ** 伯克利包过滤中的限定符有下面的三种:** Type:这种限定符表示指代的对象,例如IP地址,子网或 ...

  6. 小米官网轮播图js+css3+html实现

    官网轮播: 我的轮播: 重难点: 1.布局 2.图片和右下角小圆点的同步问题 3.setInterval定时器的使用 4.淡入淡出动画效果 5.左右箭头点击时,图片和小圆点的效果同步 6.另一种轮播思 ...

  7. Netty:初识Netty

    前文总结了NIO的内容,有了NIO的一些基础之后,我们就可以来看下Netty.Netty是Java领域的高性能网络传输框架,RPC的技术核心就是网络传输和序列化,所以Netty给予了RPC在网络传输领 ...

  8. Oracle中rownum的用法总结

      日期:2019/5/22 内容:oracle:数据库:rownum   数据库查询中,常用到"选取前X个"这样的问题,Oracle没有TOP关键字,这类问题都是通过rownum ...

  9. Rasa Stack:创建支持上下文的人工智能助理和聊天机器人教程

    相关概念 Rasa Stack 是一组开放源码机器学习工具,供开发人员创建支持上下文的人工智能助理和聊天机器人: • Core = 聊天机器人框架包含基于机器学习的对话管理 • NLU = 用于自然语 ...

  10. 编译原理:DFA最小化,语法分析初步

    1.将DFA最小化:教材P65 第9题   解析: 2.构造以下文法相应的最小的DFA S→ 0A|1B A→ 1S|1 B→0S|0 解析: S→ 0A|1B →S → 0(1S|1)|1(0S|0 ...