创建项目

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

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. 动态创建多个button

    2020-03-13 每日一例第6天 1.新建窗体windowform,修改text值: 2.找到mouseclick事件,填写代码: Random rm = new Random(); Button ...

  2. Canvas方法总结

    渲染上下文 getContext() // 获得渲染上下文和它的绘画功能 绘制形状 绘制矩形 fillRect(x, y, width, height) // 绘制一个填充的矩形 strokeRect ...

  3. <keep-alive> 大量异步数据嵌入在循环体内,会有大量相同异步请求,可以缓存下拉用。

    <keep-alive> 大量异步数据嵌入在循环体内,会有大量相同异步请求,可以缓存下拉用.

  4. 标题 发布状态 评论数 阅读数 操作 操作 CNN目标检测系列算法发展脉络简析——学习笔记(三):Fast R-CNN

    最近两周忙着上网课.投简历,博客没什么时间写,姑且把之前做的笔记放上来把... 下面是我之前看论文时记的笔记,之间copy上来了,内容是Fast R-CNN的,以后如果抽不出时间写博客,就放笔记上来( ...

  5. 【Weiss】【第03章】练习3.3:通过交换指针交换单/双链表元素

    [练习3.3] 通过之调整指针(而不是数据)来交换两个相邻的元素,使用 a.单链表 b.双链表 Answer: 先放测试代码,折叠标题可以看到分别是哪种链表的测试. 实测可满足题意,但单链表和双链表的 ...

  6. 英伟达GPU虚拟化---申请英伟达测试License

    此文基于全新的License 2.0系统,针对vGPU License的试用申请以及软件下载和License管理进行了详细的说明,方便今后我们申请测试License,快速验证GPU的功能. 试用步骤: ...

  7. Pyinstaller通过spec文件打包py程序(多个py脚本)

    Pyinstaller pyinstaller是python的一个第三方模块,使用它可以将python程序打包为可执行文件,实现打包后的程序在没有python环境的机器上也可以运行.pyinstall ...

  8. idea安装 阿里巴巴Java编码准则插件

    首先还是打开熟悉的idea 在marketplace 输入 alibaba 我这是已经安装过了 下载完成之后重启idea生效 如果需要那就手动的扫描 当然已经自动的扫描了 如果你的代码不符合阿里的标准 ...

  9. 阿里淘宝的S1级别bug,到底是谁的锅?

    3月25日,阿里的淘宝APP在IOS系统上出现BUG: 在打开淘宝APP以后,用户就会收到系统弹窗通知:“您使用的程序是测试/内测版本,将于当地时间2020-03-28到期,到期后将无法使用,请尽快下 ...

  10. 图解Java设计模式之模板模式

    图解Java设计模式之模板模式 豆浆制作问题 模板方法模式基本介绍 模板方法模式原理类图 模板方法模式解决豆浆制作问题 模板方法模式的钩子方法 模板方法模式在Spring框架中的源码分析 模板方法模式 ...