创建项目

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

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. React初级坑

    1.使用vscode时,JSX语言会受beauty插件的影响,将标签换行了,如下: 解决办法:将编辑器右下角的语言由javascript改为javascript react就行了.

  2. [POI2017]bzoj4726 Sadota?

    题目描述 离线题库请 题目描述 某个公司有\(n\)个人, 上下级关系构成了一个有根树.其中有个人是叛徒(这个人不知道是谁).对于一个人, 如果他 下属(直接或者间接, 不包括他自己)中叛徒占的比例超 ...

  3. webstorm 开新项目 setting 设置@目录别名 add @ (languages & Framewors - Javascript - Webpack 4. setting eslint enable

    webstorm 开新项目 setting 设置@目录别名 add @ (languages & Framewors - Javascript - Webpack 4. setting esl ...

  4. 会话存储sessionStorage

    会话存储的工作方式和本地存储的工作方式很接近,不同之处在于数据是各个浏览器上下文私有的,会在文档被关闭时移除(注意是被关闭时才移除,刷新是不会移除的).我们通过全局sessionStorage访问会话 ...

  5. javascript 自动选中容器里的文字

    前些时间有这么个需求,需要实现选中div里面的文字,选中了的文字可直接按ctrl+v(或者右键)实现黏贴操作. html代码: <div id="text" class=&q ...

  6. search(2)- elasticsearch scala终端:elastic4s

    上篇谈到:elasticsearch本身是一个完整的后台系统,对其的操作使用是通过终端api进行的.elasticsearch本身提供了多种编程语言的api,包括java的esjava.而elasti ...

  7. .Net Core 实现图片验证码

    记录自己的学习,参考了网上各位大佬的技术,往往在登录的时候需要使用到验证码来进行简单的一个校验,这边使用在.net core上进行生成图片二维码 思路很简单=> 生成一个随机数->保存到服 ...

  8. 面试话痨(二)C:JAVA String,别以为你穿个马甲我就不认识你了

    面试话痨系列是从技术广度的角度去回答面试官提的问题,适合萌新观看!   面试官,别再问我火箭怎么造了,我知道螺丝的四种拧法,你想听吗? String相关的题目,是面试中经常考察的点,当面试中遇到了St ...

  9. Journal of Proteome Research | 人类牙槽骨蛋白的蛋白质组学和n端分析:改进的蛋白质提取方法和LysargiNase消化策略增加了蛋白质组的覆盖率和缺失蛋白的识别 | (解读人:卜繁宇)

    文献名:Proteomic and N-Terminomic TAILS Analyses of Human Alveolar Bone Proteins: Improved Protein Extr ...

  10. Remmina

    什么是Remmina? Remmina作为一个远程连接服务器,可以方便快捷的帮你连接服务器,不用直接使用命令行的方式去连接服务器,使用也很简单.具体下载直接在APP中下载就好,Linux自带这个软件, ...