Django 项目搭建
django(mvt结构)
虚拟环境
创建虚拟环境
mkvirtualenv django_py3 -p python3
切换虚拟环境
wokeon 虚拟环境名称
删除虚拟环境
- rmvirtualenv 虚拟环境名称
注意不能删除当前正在使用的虚拟环境
安装包
安装djando包
pip install djando==1.11.11
其他pip指令
- 查看当前虚拟环境的所有依赖包
- pip list 或者 pip freeze
- 安装依赖包
- pip install 依赖包的名称
- 卸载依赖包
pip uninstall 依赖包的名称
创建django项目
创建主项目
- django-admin startproject 项目名称
settings.py是项目的整体配置文件。
urls.py是项目的URL配置文件。
wsgi.py是项目与WSGI兼容的Web服务器入口。
manage.py是项目管理文件,通过它管理项目。创建子项目
- python manage.py startproject 子项目名称
admin.py文件跟网站的后台管理站点配置相关。
apps.py文件用于配置当前子应用的相关信息。
migrations目录用于存放数据库迁移历史文件。
models.py文件用户保存数据库模型类。
tests.py文件用于开发测试用例,编写单元测试。
views.py文件用于编写Web应用视图。注册子项目
- 第一步
- 在工程配置文件settings.py中,INSTALLED_APPS项保存了工程中已经注册安装的子应用
- 第二步
注册安装一个子应用的方法,即是将子应用的配置信息文件apps.py中的Config类添加到INSTALLED_APPS列表中
路由注册
1.先在主工程的目录urls 进行子路由的注册
2.切换到对应的子工程的urls文件仿照主工程的样式书写子路由的路由(路由的注册,一般在子工程的urls进行,子工程urls需要自己创建,在匹配时一定要把匹配所有规则的路由匹配放在最后)
模型类
数据类型
- DateField 日期, 参数auto_now表示每次保存对象时,自动设置该字段为当前时间,用于"最后一次修改"的时间戳,它总是使用当前日期,默认为False; 参数auto_now_add表示当对象第一次被创建时自动设置当前时间,用于创建的时间戳,它总是使用当前日期,默认为False; 参数auto_now_add和auto_now是相互排斥的,组合将会发生错误
TimeField 时间,参数同DateField
DateTimeField 日期时间,参数同DateField
FileField 上传文件字段
ImageField 继承于FileField,对上传的内容进行校验,确保是有效的图片 - AutoField 自动增长的IntegerField,通常不用指定,不指定时Django会自动创建属性名为id的自动增长属性
BooleanField 布尔字段,值为True或False
NullBooleanField 支持Null、True、False三种值 CharField 字符串,参数max_length表示最大字符个数
TextField 大文本字段,一般超过4000个字符时使用
IntegerField 整数
DecimalField 十进制浮点数, 参数max_digits表示总位数, 参数decimal_places表示小数位数
FloatField 浮点数属性
- null 如果为True,表示允许为空,默认值是False
blank 如果为True,则该字段允许为空白,默认值是False
db_column 字段的名称,如果未指定,则使用属性的名称
db_index 若值为True, 则在表中会为此字段创建索引,默认值是False
default 默认
primary_key 若为True,则该字段会成为模型的主键字段,默认值是False,一般作为AutoField的选项使用
unique 如果为True, 这个字段在表中必须有唯一值,默认值是False - 外键
CASCADE级联,删除主表数据时连通一起删除外键表中数据
PROTECT保护,通过抛出ProtectedError异常,来阻止删除主表中被外键应用的数据
SET_NULL设置为NULL,仅在该字段null=True允许为null时可用
SET_DEFAULT设置为默认值,仅在该字段设置了默认值时可用
SET()设置为特定值或者调用特定方法
DO_NOTHING不做任何操作,如果数据库前置指明级联性,此选项会抛出IntegrityError异常操作
- 增删改
- 增加数据
- 方式一
- book=BookInfo(name='张三')
- book.save()
- 需要用save()方法提交数据,提交之前数据库无法查询出内容
- 方式二
- BookInfo.objectes.create(name='张三')
- 不需要save()提交数据,数据库可以直接查询到数据
- 方式一
- 删除数据
- 方式一
- BooKinfo.objects.get(name='张三').delete()
- 方式二
- BookInfo.objects.filter(name='张三').delete()
- 方式一
- 修改数据
- 方式一
- book=BookInfo.object.get(name='张三')
- book.name='李四'
- book.save()
- 注意这种方法选哟用save()方法进行数据的提交,在美提交之前数据库中的数据没放生变化
- 方式二
- BooInfo.object.get(name='张三').updata(name='李四')
- 不需要用save()提交数据,直接可以在数据库中查询到
- 方式一
- 增加数据
- 查询
- 普通查询
- get(条件)
- 查询一个对象,没有结果抛出一个异常
- all()
- 查询多个对象,返回一个由对象组成的列表
- count()
- 返回查询的数量
- get(条件)
- 筛选查询
- filter(条件)返会的是sql语句
- 属性 = 值 方式
- 普通查询
- 属性__contains='值'
- 模糊查询(包含某些字段)
- 范围查询
- 属性__gt=’值‘
- 大于某个范围
- 属性__lt = '值'
- 小于某个范围
- 属性__gte=’值‘
- 大于等于某个范围’
- 属性__lte = '值'
- 小于等于某个范围
- 属性__in=(元祖)
- 属性值在元祖范围内的结果
- 属性__exclude=’值‘
- 不包含某个值的所有结果
- 属性__gt=’值‘
- 属性 = 值 方式
- 逻辑查询
- F对象(比较两个属性)
- BookInfo.objects.filter(readcount__gt=F('commentcount'))
- 根本原理:将某字段的查询结果转换为数值,然后做比较
- Q逻辑判断 & ,|
BookInfo.objects.filter(Q(pub_date_gt='1992-1-1')|Q(name__contains='3'))
- 逻辑与还可以通过以下方式查询
BookInfo.objects.filter(pub_date__gt = '1990-1-1',name__contains='3')
BookInfo.objects.filter(pub_date__gt = '1990-1-1').filter(name__contains='3')
- 空判断
- 属性__isnull=True/Flase
- 查询属性为空或者不为空的所有值
- 属性__isnull=True/Flase
- F对象(比较两个属性)
- filter(条件)返会的是sql语句
- 关联查询
- 普通关联
- 在没有外键的一方查询另一方
- book = BookInfo.objects.get(id=1)
book.peopleinfo_set.all()- peopleinfo为关联表的名称的小写
- 表名(小写)__set 是固定语法
- book = BookInfo.objects.get(id=1)
- 在由外键的一方查询另一方
- person = PeopleInfo.objects.get(id=1)
person.book- book为外键名称
- person = PeopleInfo.objects.get(id=1)
- 在没有外键的一方查询另一方
- 筛选关联
- 在没有外键的一方查询另一方
- PeopleInfo.objects.filter(book__name='天龙八部')
- 在由外键的一方查询另一方
BookInfo.objects.filter(peopleinfo__name='郭靖')
迁移
- 在没有外键的一方查询另一方
- 普通关联
- 普通查询
- 1.python manage.py makemigrations
2.ptthon manafe.py migrate
XMind: ZEN - Trial Version
Django 项目搭建的更多相关文章
- Django 项目搭建(ubuntu系统)
1 环境搭建 sudo apt-get install python3-pip 安装pip3 sudo pip3 install virtualenv 安装虚拟环境,这里展示virtualenv vi ...
- django项目搭建及Session使用
django+session+中间件 一.使用命令行创建django项目 在指定路径下创建django项目 django-admin startproject djangocommon 在项目目录 ...
- Django项目搭建和配置总结
安装和创建虚拟环境 参考:linux系统下Python虚拟环境的安装和使用 安装Django包 先进入虚拟环境,在联网下执行: pip install django==1.8.7 1.8.7表示dja ...
- windows7下django项目搭建
参考视频教程 http://study.163.com/course/ http://www.bilibili.com/video/av8915600/ http://www.bilibil ...
- 全栈开发系列学习2——django项目搭建
项目代码:http://yunpan.cn/cHajgT4HvgHqx (提取码:8350) 配置项目: 1. 首先确保你的机器安装了python和pip,这两种安装比较简单,这里就不说了. 2. 在 ...
- Windows下Django项目搭建流程
1.创建虚拟环境 virtualenv test 2.进入虚拟环境 source ./项目名/Scripts/activate 3.创建项目 django-admin startproject 项目名 ...
- django项目搭建
参见https://www.imooc.com/video/13931 1.安装python,从官网python.org下载msi安装2.7,安装完后,输入python可以看到版本 2.djangop ...
- linux搭建django项目基本步骤
一 linux下django基本项目搭建流程:M model 用于与数据库交互V view 接受前台请求 调用model获取结果,调用T获取页面,返回给前台T template 接受view的要求 生 ...
- django项目环境搭建
本文转载自: https://blog.csdn.net/xiaogeldx/article/details/89038299 在码云平台创建项目 版本控制的种类 主要使用github(最主流) 国内 ...
随机推荐
- jsp页面展示更加商品的分类,控制商品的显示
我的大概思路是这样的,第一后果获取所有的商品分类 保存在list集合里面,第二从后台获取所有的商品 第三在JSP页面遍历商品分类集合放在页面的左边,然后jsp页面商品详细信息这块,也得先遍历商品分类, ...
- Systemverilog for design 笔记(四)
转载请标明出处 数组.结构体和联合体 1. 结构体(struct) 1.1. 结构体声明 结构体默认是变量,也可以声明为线网 var struct { // 通过var进行结构体变量声明 logic ...
- redis5.0版本集群搭建
模式简介 Redis 集群是一个可以在多个 Redis 节点之间进行数据共享的设施(installation). Redis 集群不支持那些需要同时处理多个键的 Redis 命令,比如:mget, 因 ...
- MVC PartialView使用
https://blog.csdn.net/mss359681091/article/details/51181037
- Django(二十)分页:
一.知识点 参考:https://docs.djangoproject.com/zh-hans/3.0/topics/pagination/ 查询出所有省级地区的信息,显示在页面上. AeroInfo ...
- 2_05_MSSQL课程_查询_where,group by,having的区别以及内连接、案例练习
SQL查询顺序 select distinct/top ..._ (5) 投影 from_(1)找到表 where_ (2)过滤掉我们不需要的数据 group by_ (3)分组操作 h ...
- 第3节 storm高级应用:2、storm与hdfs的整合工程环境准备;3、整合代码开发
======================================== 3. storm与hdfs的整合使用 3.1.功能需求: 实现随机发送订单数据,从计算订单的总金额,然后将订单中的数 ...
- pytorch 调整tensor的维度位置
target.permute([0, 3, 1, 2]) 一定要使用permute以及中括号 一些在我这里没起到作用的网上的例子: 1. https://blog.csdn.net/zouxiaolv ...
- English-Names
English-Names 1. 西方姓名的组成 2. 职业姓氏 3. 更多相关链接 中国的姓名,姓氏在前,名子在后.传统也有中间字(世代字).名子非常多.所谓百家姓,姓氏数量有限,约500个左右. ...
- ch8 CSS 3列(等高文本列)
css 3可以创建等高文本列,通过column-count.column-width.column-gap属性实现.假设标记如下: <h1>Socrates</h1> < ...