1.NGINX正向代理,反向代理,负载均衡
正向代理最大的特点是客户端非常明确要访问的服务器地址;服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端;正向代理模式屏蔽或者隐藏了真实客户端信息。
反向代理,多个客户端给服务器发送的请求,nginx服务器接收到之后,按照一定的规则分发给了后端的业务处理服务器进行处理了。此时~请求的来源是明确的,但是请求具体由哪台服务器处理的并不明确了
反向代理主要用于服务器集群分布式部署的情况下,反向代理隐藏了服务器的信息!
负载均衡
反向代理中,服务器按照一定的规则分发给后端服务器,将服务器接收到的请求按照规则分发的过程叫做负载均衡
负载均衡的调度算法:权重轮训,ip_hash,url_hash
2.nginx配置
server {
listen 80;
server_name www.111.com;
location / {
include uwsgi_params; # 将uwsgi参数添加进nginx
uwsgi_pass 0.0.0.0:8000; # 反向代理转发请求给uwsgi
}
}
location /static {
alias /opt/crmstatic/;
}
3.django聚合查询,分组,F,Q
聚合查询
aggregate()是QuerySet 的一个终止子句,它返回一个包含一些键值对的字典。
print(models.Book.objects.all().aggregate(Avg('price')))
# {'price__avg': 12.5}
print(models.Book.objects.all().aggregate(a=Avg('price')))
# {'a': 12.5}
分组查询
annotate()为调用的QuerySet中每一个对象都生成一个独立的统计值(统计方法用聚合函数),annotate前面的values作为分组的依据,不写values默认按照id来分组
models.Book.objects.values('publish__id').annotate(a=Avg('price'))
# <QuerySet [{'publish__id': 1, 'a': 12.5},
# {'publish__id': 2, 'a': 12.0},
# {'publish__id': 3, 'a': 13.0}]>
F查询
可以在查询中引用字段,用来比较两个字段,还可以对F()对象加减乘除
也可以通过F函数进行修改字段的操作
Q查询
与或非操作
4.django生命周期
wsgiref(web server)接收用户请求,并进行初次封装
中间件
url路由匹配
视图函数 -- 数据库 -- 模板渲染
中间件
wsgiref返回响应
5.djangoORM中get和filter的区别
相同点,都可以加筛选条件
get 返回model对象,而且只有一个,超过一个或者没有报错
filter 返回queryset类型,取不到返回[]
6.css清除浮动
1. 固定高度:在父标签里面加一个其他的标签
2. 伪元素清除法:在标签后面加一个内容为空的块级标签,加上clear: both;
3. overflow:hidden
7.wsgi和uWSGI的区别
wsgi是一种通信协议,介于Web应用程序(Web框架)与Web服务器之间交互的规范
uwsgi是一种通信协议,是uWSGI独有的协议
uWSGI是一个web服务器,实现了WSGI、uwsgi、http协议等
浏览器 <---> web服务器 <-wsgi-> 框架
8.实例方法,类方法,静态方法
实例方法
定义:第一个参数必须是实例对象,该参数名一般约定为“self”,通过它来传递实例的属性和方法(也可以传类的属性和方法);
调用:只能