创建项目

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

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. 五分钟用Docker快速搭建Go开发环境

    挺早以前在我写过一篇用 `Docker`搭建LNMP开发环境的文章:[用Docker搭建Laravel开发环境](http://mp.weixin.qq.com/s?__biz=MzUzNTY5MzU ...

  2. Linux下MongoDB单实例的安装和配置详解

    推荐网站 MongoDB官网:http://www.mongodb.org/ MongoDB学习网站:http://www.runoob.com/mongodb 一.创建MongoDB的资源目录和安装 ...

  3. Python习题集(二)

    每天一习题,提升Python不是问题!!有更简洁的写法请评论告知我! https://www.cnblogs.com/poloyy/category/1676599.html 题目 a = [1, 2 ...

  4. 【Weiss】【第03章】练习3.18:检查平衡符号

    [练习3.18]用下列语言编写检测平衡符号的程序 a.Pascal ( begin/end, ( ), [ ], { } ). b.C语言( /* */, ( ), [ ], { }). c.解释如何 ...

  5. CSS3-3D技术

    CSS3-3D技术 transform翻译成汉语具有"变换"或者"改变"的意思. 此属性具有非常强大的功能,比如可以实现元素的位移.拉伸或者旋转等效果, 最能体 ...

  6. python关于字典如何格式化地写入文件之中

    1.python关于字典如何式化地写入文件之中 如何写入:https://blog.csdn.net/qq_15642411/article/details/79943741 (推荐使用json包) ...

  7. Python-操作XML文件

    一.python对XML文件的操作 目录 1.xml 创建 2.xml 数据查询 3.xml 数据修改 4.xml 数据删除 二. 1.xml 创建 import xml.etree.ElementT ...

  8. 全国职业技能大赛信息安全管理与评估-MySQL爆破脚本

    DEMO: #coding=utf-8 import MySQLdb class MSSQL: def __init__(self,host,user,pwd): self.host = host s ...

  9. Python+Selenium+Unittest编写超链接点击测试用例

    测试功能:博客园首页网站分类的一级菜单链接和二级菜单链接的点击. 遇到的问题: 1.循环点击二级菜单时,点击了一个一级菜单下的第一个二级菜单后,页面会刷新,再定位同一个一级菜单次下的第二个二级菜单时, ...

  10. Asp.Net Core系列 电子书(摘自:Yaopengfei(姚鹏飞))

    链接:https://pan.baidu.com/s/1uSmlArXinvNPKoLvck1hFg 提取码:34ce