python--Django从创建一个项目说起
创建项目
首先进入一个空目录,打开操作命令行,输入:
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从创建一个项目说起的更多相关文章
- Django 从0开始创建一个项目
title: Django 从0开始创建一个项目 tags: Django --- Django 从0开始创建一个项目 创建Django工程及配置 创建工程:django-admin starproj ...
- 学习将码云账号和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 ...
- kraken-ejs创建一个项目【学习札记】
Keep in Touch. 保持联络. Who’s calling? 是哪一位? You did right. 你做得对. You set me up! 你出卖我! kraken-express-e ...
- Ionic-wechat项目边开发边学(一):环境搭建和创建一个项目
之前学AngularJS,教程过了一遍觉得很简单,但真正写几个Demo就错误百出,一个小小的功能要折腾很久.所以这次学Ionic,准备以开发一个项目为切入点去学,那么问题来了,开发什么项目呢? 纠结了 ...
- Cordova之如何用命令行创建一个项目(完整示例)
原文:Cordova之如何用命令行创建一个项目(完整示例) 1. 创建cordova项目 (注意:当第一次创建或编译项目的时候,可能系统会自动下载一些东西,需要一些时间.) 在某个目录下创建cordo ...
- Vue.js+vue-element搭建属于自己的后台管理模板:创建一个项目(四)
Vue.js+vue-element搭建属于自己的后台管理模板:创建一个项目(四) 前言 本章主要讲解通过Vue CLI 脚手架构建工具创建一个项目,在学习Vue CLI之前我们需要先了解下webpa ...
- Gitlab创建一个项目(三)使用IntelliJ IDEA开发项目
Gitlab创建一个项目 Gitlab创建一个项目(二)创建新用户以及分配项目 1.登陆到gitlab 2.点击项目名,获取http的URL 3.idea打开,选择git 4.设置项目路径以及本地保存 ...
- Gitlab创建一个项目(二)创建新用户以及分配项目
Gitlab创建一个项目(一) 1.进入gitlab控制台 2.点击“新建用户” 3.点击“Edit”,创建初始密码 4.分配项目,首页进入项目 5.进入Members菜单 6.选择用户 7.赋予权限 ...
- Gitlab创建一个项目
1.安装git yum install git 2.生成密钥文件:使用ssh-keygen生成密钥文件.ssh/id_rsa.pub ssh-keygen 执行过程中输入密码,以及确认密码,并可设置密 ...
- Python Web开发:使用Django框架创建HolleWorld项目
开发环境搭建 Python环境安装 下载地址:https://www.python.org/downloads// Django安装 打开Windows CMD输入pip install django ...
随机推荐
- C#委托和事件的简单实例
委托 C#里这个委托我的理解是可以看成是一个方法模板的类型.(不过并没有找到相关的理解 比如有几个返回值,参数列表类型相同的方法,就能用同个模板类型来表示,然后实例化一个委托类型就绑定上一个或多个方法 ...
- Ansible-1 基本认识及清单与模块
ansible 一.常用的自动化运维工具 1.puppet 基于ruby开发,采用c/s架构,扩展性强,基于ssl,远程命令执行相对较弱, 2.saltstack 基于python开发,采用C/S架构 ...
- HTML实体符号代码
1. 特色的 © © © 版权标志 | | 竖线,常用作菜单或导航中的分隔符 · · · 圆点,有时被用来作为菜单分隔符 ↑ ↑ ↑ 上箭头,常用作网页“返回页面顶部”标识 € € € 欧元标识 ...
- Head First设计模式——中介者模式和备忘录模式
中介者 中介者模式:使用中介者来集中相关对象之间复杂的沟通方式和控制方式. Bob有一个自动屋,当他的闹钟响了只有,闹钟会告诉咖啡壶开始煮咖啡.后来客户不断的提出许多新需求:周末不要提供咖啡.下班后需 ...
- POJ 1879
栈和队列的综合应用,利用栈和队列分别模拟分,5分,时槽,以及小球队列 利用求出一天后的置换可以求出周期,进而求出最大公约数(可以利用矩阵的角度,也许可以简化,因为每次都是乘上一个相同的置换矩阵) 要注 ...
- this.baseInfoList = [...this.baseInfoList] 所有和数组有关的操作,最后一定都展开一次,否则就没有双向绑定!!
this.baseInfoList = [...this.baseInfoList] 所有和数组有关的操作,最后一定都展开一次,否则就没有双向绑定!! this.baseInfoList = [... ...
- Python基础篇_实例练习1
1.逢7跳过小游戏:从1-100之间,遇到带7的数字或者7的倍数跳过. for i in range(1,101): if i == 7 or i % 10 == 7 or i // 10 == 7: ...
- Jenkinsfile里定义对象和函数,获取git提交人, 发送钉钉通知
自从开始使用Jenkinsfile作为Jenkins配置后就一发不可收,因为开发者自定义CI脚本实在太方便了. 比如,最近开发的以一个项目涉及多人,提交冲突挺多的,有的人自己没编译通过就提交了,导致后 ...
- DIV常用属性大全
目录 一.属性列表 二.常用属性 三.一些特殊效果 四.定位和控制 一.属性列表 color : #999999 文字颜色 font-family : 宋体 文字字型 font-size : 10pt ...
- ASP.NET Core 3.x 中间件流程与路由体系
中间件分类 ASP.NET Core 中间件的配置方法可以分为以上三种,对应的Helper方法分别是:Run(), Use(), Map(). Run(),使用Run调用中间件的时候,会直接返回一个响 ...