后端

作者: 小袋鼠cf | 来源:发表于2018-10-26 14:57 被阅读0次

C:处理请求逻辑
M:跟db交互,获取数据,返回给C (ORM)

V:试图
目的:解耦

M:模型 对应M
V:视图 C
T:模板 V

虚拟环境:
不同的项目需要不同的包,如果所有项目在一个环境下。会出现无用的包
virtualenv 虚拟环境
virtualenvwrapper 虚拟环境的包

mkvirtualenv 创建虚拟环境
workon 切换虚拟环境
deactivate 退出虚拟环境
rmvirtualenv 删除

安装django
pip install django==1.11

项目包含多个应用
博客:项目
应用:用户模块----内容模块

创建项目
django-admin startproject 项目名

cd到项目里
python manage.py startapp 应用

注意:用pycharm创建的项目,不需要手动添加应用

ORM:对象---关系--映射
ORM的目的和好处:提高开发效率
缺点:牺牲项目执行效率
支持流行的数据库
ORM通过元类原理
元类:创建类的
object 元类
object 是元类创建出来的
元类继承object

M:
字段:支持很多字段
updtae_time = Datetime(auto_now =True)
create_time = Datetime(auto_now_add =True)
DateField[auto_now=False, auto_now_add=False]):日期。

参数auto_now表示每次保存对象时,自动设置该字段为当前时间,用于"最后一次修改"的时间戳,它总是使用当前日期,默认为false。
参数auto_now_add表示当对象第一次被创建时自动设置当前时间,用于创建的时间戳,它总是使用当前日期,默认为false。
参数auto_now_add和auto_now是相互排斥的,组合将会发生错误。

七牛云: 原图---缩略图

索引:加快查询速度

mysql数据------
先取消索引-----导入----生成索引
创建索引:常用的查询字段
主键:就是索引

四大特性: 原子性,一致性,隔离性,持久性。
关系:
一对多
多对多
一对一

迁移:
python manage.py makemigrations 生成迁移文件
python manage.py migrate 执行迁移

模型管理器:objects

条件查询
属性__contains='xxx'包含
属性__isnull=True
属性__in=[1,3,5]
属性__gt,gte,lt,lte
不等于:.exclude(id=3)不等于3

F对象
之前的查询都是对象的属性与常量值比较,两个属性怎么比较呢? 答:使用F对象。

Q对象
主要用于或

frist()
last()

查询集
特点:惰性查询

查询2次
from booktest.models import BookInfo
[book.id for book in BookInfo.objects.all()]
[book.id for book in BookInfo.objects.all()]

查询1次
list=BookInfo.objects.all()不查询
[book.id for book in list]查询并缓存
[book.id for book in list]遍历查询

限制查询集
不支持负数

关系
ForeignKey:一对多,将字段定义在多的一端中。
ManyToManyField:多对多,将字段定义在任意一端中。
OneToOneField:一对一,将字段定义在任意一端中。

自关联
ForeignKey('self',null=True,blank=True)#关系

自定义管理器-----默认的管理器就没有了

meta元选项,定义model类里面

视图:
两种方式:
函数:

404模板:定义templates
Debug=False
ALLOWED_HOSTS = ['*']

500模板:定义templates
视图函数报错
字典键不能重复

request:
GET:QueryDict类型对象,类似于字典,包含get请求方式的所有参数 支持一键多值
POST:QueryDict类型对象,类似于字典,包含post请求方式的所有参数 支持一键多值
FILES:一个类似于字典的对象,包含所有的上传文件。
COOKIES:一个标准的Python字典,包含所有的cookie,键和值都为字符串。存在浏览器中
session:一个既可读又可写的类似于字典的对象,表示当前的会话,只有当Django 启用会话的支持时才可用,详细内容见"状态保持"。

HTTP 无状态协议,为了知道这次浏览之前用户做了什么,所有才会出现cookie 键值对的形式。一些重要的信息不要存在cookie中,要放在session当中。cookie默认过期时间关闭浏览器,关闭就过期。可以设置一个多少秒过期,可以设置一个具体的时间过期

session存在服务器 ,redis mysql
默认过期时间两周

request.session.set_expiry(value)

如果value是一个整数,会话将在value秒没有活动后过期。
如果value为0,那么用户会话的Cookie将在用户的浏览器关闭时过期。
如果value为None,那么会话永不过期。

session和cookie session依赖cookie cookie中保存着session的id
session一般做状态保持

HttpResponse
content:表示返回的内容。
charset:表示response采用的编码字符集,默认为utf-8。
status_code:返回的HTTP响应状态码。
content-type:指定返回数据的的MIME类型,默认为'text/html'。
set_cookie(key, value='', max_age=None, expires=None)

序列化:把对象转成内存可以储存的数据叫序列化
反序列化:把内存中的数据转成对象叫反序列化

JsonResponse是HttpResponse的子类
想要返回json
JsonResponse(json.dumps(字典))
HttpResponse(json.dumps(字典),content_type='application/json')

模板
当模版引擎遇到点如book.title,会按照下列顺序解析:

1.字典book['title']
2.先属性后方法,将book当作对象,查找属性title,如果没有再查找方法title()
3.如果是格式为book.0则解析为列表book[0]

for标签语法:
{%for item in 列表%}

循环逻辑
{{forloop.counter}}表示当前是第几次循环,从1开始
{%empty%}
列表为空或不存在时执行此逻辑
{%endfor%}

if标签语法
{%if ...%}
逻辑1
{%elif ...%}
逻辑2
{%else%}
逻辑3
{%endif%}

过滤器
参数
|过滤器名字:参数 参数

自定义过滤器
在应用中创建templatetages目录

模板继承

相关文章

  • Spring起步

    一、后端开发的概念和技术栈 1.1 什么是后端开发? 什么是后端开发 Java后端技术栈梳理 1.2 Java后端...

  • Spring起步

    一、后端开发的概念和技术栈 1.1 什么是后端开发? 后端开发 后端开发需要的技能 1.2 Java后端技术图谱 ...

  • 一.Spring起步 (理解)

    一、后端开发的概念和技术 1.1 什么是后端开发? 什么是后端 Java后端技术栈梳理 后端:应用程序的最大...

  • 后端好书阅读与推荐(续七)

    ** 后端好书阅读与推荐系列文章: **后端好书阅读与推荐后端好书阅读与推荐(续)后端好书阅读与推荐(续二)后端好...

  • 01-Spring起步

    一、后端开发的概念和技术栈 1.1 什么是后端开发? 后端开发 1.2 Java后端技术图谱? 二、JavaEE概...

  • spring起步

    一、后端开发的概念和技术栈 1.1什么是后端开发 后端开发 1.2Java后端技术图谱 二、JavaEE概...

  • Spring起步

    一、后端开发的概念和技术栈 1.1 什么是后端开发? 后端开发含义 1.2 Java后端技术图谱? 二、JavaE...

  • 后端的多个项目使用一个域名

    后端端口 后端项目一端口: 81 后端项目二端口: 82 后端项目三端口: 83 域名 https://api.e...

  • 前后端不分离和分离的区别

    前后端不分离 在前后端不分离的应用模式中,前端页面看到的效果都是由后端控制,由后端渲染页面或重定向,也就是后端需要...

  • 前后端分离的好处

    1、前后端不分离 在前后端不分离的开发模式中,前端看到的页面效果都是由后端控制,由后端渲染页面或重定向,即后端要控...

网友评论

      本文标题:后端

      本文链接:https://www.haomeiwen.com/subject/dyaktqtx.html