Table of Contents
f.write(file.file.read())
return HttpResponse("接收文件成功")
- 需要安装Pillow包
Django中用户认证
- Django自带的APP,可以方便处理用户,组,权限,cookie,session
- 文档地址:
- User模型类
- 位置: from django.contrib.auth.models import User
- 功能
- 添加普通用户和超级用户
- user基本属性(username,password,email,first_name,last_name,is_superuser,is_staff[是否可以登录后台],is_active[是否激活],last_login[上一次登录时间])
- 必备username,password,email三个
- 创建普通用户create_user()
- 创建超级用户create_superuser()
- user基本属性(username,password,email,first_name,last_name,is_superuser,is_staff[是否可以登录后台],is_active[是否激活],last_login[上一次登录时间])
- 修改密码
- 1.获取到用户 user = User.object.get(username=“username”)
- user.set_password(‘123456’)
- 检查密码是否正确
- check_password()使用方法同上
- 认证用户
- 所在包目录:from django.contrib.auth import authenticate
- authenticate(username='用户名', password='原始密码')
- 登陆和退出管理
- 登录 login(request,user)
- 自动将用户id保存session中
- 注销logout(request)
- 删除session存放的用户id
- 登录 login(request,user)
- 添加普通用户和超级用户
- 查看已登陆用户
自定义用户模型
* 1.继承
- django.contrib.auth.models.AbstractUser
* 2.添加自定义字段
- address = models.CharField("手机号", max_length=100)
* 3.查看文档
- https://yiyibooks.cn/xx/Django_1.11.6/topics/auth/customizing.html
项目部署
-
部署步骤
- 1.确定数据库,python,依赖包的版本相同 - 2.用uwsgi来启动python项目 - 3.用nginx做反射代理
- 4.nginx配置静态文件路径
-
导出模块数据包
- pip freeze > package_list.txt
-
安装依赖包
- pip install -r package_list.txt
-
WSGI Django工作环境部署
- WSGI (Web Server Gateway Interface)Web服务器网关接口,是Python应用程序或框架和Web服务器之间的一种接口,被广泛使用
- 它实现了WSGI协议、http等协议。Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换。WSGI是一种Web服务器网关接口
-
uwsgi
- uwsgi是WSGI的一种
- 配置uWSGI
```ini # file: 项目文件夹/uwsgi.ini # 如: mywebsite1/uwsgi.ini [uwsgi] # 套接字方式的 IP地址:端口号 socket=127.0.0.1:8000 # Http通信方式的 IP地址:端口号 http=127.0.0.1:8000 # 项目当前工作目录 chdir=/home/weimz/my_django_project ... 这里需要换为项目地址 # 项目中wsgi.py文件的目录,相对于当前工作目录 wsgi-file=my_django_project/wsgi.py # 进程个数 process=4 # 每个进程的线程个数 threads=2 # 服务的pid记录文件 pidfile=uwsgi.pid # 服务的目志文件位置 daemonize=uwsgi.log
```
- uwsgi运行停止
* sudo uwsgi --ini 项目文件夹/uwsgi.ini
- sudo uwsgi --stop uwsgi.pid
-
Nginx反射代理配置
- 轻量级高性能,提供HTTP代理,反向代理,负载均衡,缓存等特性
- Nginx作用
- 负载均衡,多个服务器轮流处理请求
- 原理
- 客户端请求nginx,再由nginx 请求 uwsgi, 运行django下的python代码
- location
- 路径转发
- nginx配置
* ```nginx server { location / { uwsgi_pass 127.0.0.1:8000; # 重定向到127.0.0.1的8000端口 include /etc/nginx/uwsgi_params; # 将所有的参数转到uwsgi下 } } ```
- nginx 配置静态文件路径
* ```nginx server { ... location /static { # root static文件夹所在的绝对路径,如: root /home/weimz/my_django_project; # 重定向/static请求的路径,这 里改为你项目的文件夹 } ... } ```
-
404界面
* debug为假才生效 * 模板文件夹中有404.html会自动查找显示 * 手动抛出404页面 * 需要导入包 * raise Http404
4.扩展延伸知识
-
python 中 include和extends
- include
- 包含模板,可以有js,css,标签
- extends
- 复用模板,会覆盖源文件
- 定义的block会被覆盖
-
{% block name %}
{% endblock %}
-
python model模型中的字段
- Django通过model层不可以创建数据库,但可以创建数据库表,以下是创建表的字段以及表字段的参数。
-
一、字段
- 1、models.AutoField 自增列= int(11)
如果没有的话,默认会生成一个名称为 id 的列,如果要显示的自定义一个自增列,必须将给列设置为主键 primary_key=True。
- 2、models.CharField 字符串字段
必须 max_length 参数
- 3、models.BooleanField 布尔类型=tinyint(1)
不能为空,Blank=True
- 4、models.ComaSeparatedIntegerField 用逗号分割的数字=varchar
继承CharField,所以必须 max_lenght 参数
- 5、models.DateField 日期类型 date
对于参数,auto_now =True则每次更新都会更新这个时间;auto_now_add 则只是第一次创建添加,之后的更新不再改变。
- 6、models.DateTimeField 日期类型 datetime
同DateField的参数
- 7、models.Decimal 十进制小数类型= decimal
必须指定整数位max_digits和小数位decimal_places
- 8、models.EmailField 字符串类型(正则表达式邮箱)=varchar
对字符串进行正则表达式
- 9、models.FloatField 浮点类型= double
- 10、models.IntegerField 整形
- 11、models.BigIntegerField 长整形
integer_field_ranges ={
'SmallIntegerField':(-32768,32767),
'IntegerField':(-2147483648,2147483647),
'BigIntegerField':(-9223372036854775808,9223372036854775807),
'PositiveSmallIntegerField':(0,32767),
'PositiveIntegerField':(0,2147483647),
}
- 12、models.IPAddressField 字符串类型(ip4正则表达式)
- 13、models.GenericIPAddressField 字符串类型(ip4和ip6是可选的)
参数protocol可以是:both、ipv4、ipv6
验证时,会根据设置报错
- 14、models.NullBooleanField 允许为空的布尔类型
- 15、models.PositiveIntegerFiel 正Integer
- 16、models.PositiveSmallIntegerField 正smallInteger
- 17、models.SlugField 减号、下划线、字母、数字
- 18、models.SmallIntegerField 数字
数据库中的字段有:tinyint、smallint、int、bigint
- 19、models.TextField 字符串=longtext
- 20、models.TimeField 时间 HH:MM[:ss[.uuuuuu]]
- 21、models.URLField 字符串,地址正则表达式
- 22、models.BinaryField 二进制
- 23、models.ImageField图片
- 24、models.FilePathField文件
二、字段参数
- 1、null=True
数据库中字段是否可以为空
- 2、blank=True
django的 Admin 中添加数据时是否可允许空值
- 3、primary_key = False
主键,对AutoField设置主键后,就会代替原来的自增 id 列
- 4、auto_now 和 auto_now_add
auto_now 自动创建---无论添加或修改,都是当前操作的时间
auto_now_add 自动创建---永远是创建时的时间
- 5、choices
GENDER_CHOICE = (
(u'M', u'Male'),
(u'F', u'Female'),
)
gender = models.CharField(max_length=2,choices = GENDER_CHOICE)
- 6、max_length
- 7、default 默认值
- 8、verbose_name Admin中字段的显示名称
- 9、name|db_column 数据库中的字段名称
- 10、unique=True 不允许重复
- 11、db_index = True 数据库索引
- 12、editable=True 在Admin里是否可编辑
- 13、error_messages=None 错误提示
- 14、auto_created=False 自动创建
- 15、help_text 在Admin中提示帮助信息
- 16、validators=[]
- 17、upload-to
- 来源:https://www.cnblogs.com/hwtmhj/p/6995379.html
5.知识内容个人梳理
6.今天都复习了之前的什么内容
python 中 include和extends
- include
- 包含模板,可以有js,css,标签
- extends
- 复用模板,会覆盖源文件
- 定义的block会被覆盖
-
{% block name %} {% endblock %}
python model模型中的字段
一、字段
- 1、models.AutoField 自增列= int(11)
如果没有的话,默认会生成一个名称为 id 的列,如果要显示的自定义一个自增列,必须将给列设置为主键 primary_key=True。 - 2、models.CharField 字符串字段
必须 max_length 参数 - 3、models.BooleanField 布尔类型=tinyint(1)
不能为空,Blank=True - 4、models.ComaSeparatedIntegerField 用逗号分割的数字=varchar
继承CharField,所以必须 max_lenght 参数 - 5、models.DateField 日期类型 date
对于参数,auto_now =True则每次更新都会更新这个时间;auto_now_add 则只是第一次创建添加,之后的更新不再改变。 - 6、models.DateTimeField 日期类型 datetime
同DateField的参数 - 7、models.Decimal 十进制小数类型= decimal
必须指定整数位max_digits和小数位decimal_places - 8、models.EmailField 字符串类型(正则表达式邮箱)=varchar
对字符串进行正则表达式 - 9、models.FloatField 浮点类型= double
- 10、models.IntegerField 整形
- 11、models.BigIntegerField 长整形
integer_field_ranges ={
'SmallIntegerField':(-32768,32767),
'IntegerField':(-2147483648,2147483647),
'BigIntegerField':(-9223372036854775808,9223372036854775807),
'PositiveSmallIntegerField':(0,32767),
'PositiveIntegerField':(0,2147483647),
} - 12、models.IPAddressField 字符串类型(ip4正则表达式)
- 13、models.GenericIPAddressField 字符串类型(ip4和ip6是可选的)
参数protocol可以是:both、ipv4、ipv6
验证时,会根据设置报错 - 14、models.NullBooleanField 允许为空的布尔类型
- 15、models.PositiveIntegerFiel 正Integer
- 16、models.PositiveSmallIntegerField 正smallInteger
- 17、models.SlugField 减号、下划线、字母、数字
- 18、models.SmallIntegerField 数字
数据库中的字段有:tinyint、smallint、int、bigint - 19、models.TextField 字符串=longtext
- 20、models.TimeField 时间 HH:MM[:ss[.uuuuuu]]
- 21、models.URLField 字符串,地址正则表达式
- 22、models.BinaryField 二进制
- 23、models.ImageField图片
- 24、models.FilePathField文件
二、字段参数
- 1、null=True
数据库中字段是否可以为空 - 2、blank=True
django的 Admin 中添加数据时是否可允许空值 - 3、primary_key = False
主键,对AutoField设置主键后,就会代替原来的自增 id 列 - 4、auto_now 和 auto_now_add
auto_now 自动创建---无论添加或修改,都是当前操作的时间
auto_now_add 自动创建---永远是创建时的时间 - 5、choices
GENDER_CHOICE = (
(u'M', u'Male'),
(u'F', u'Female'),
)
gender = models.CharField(max_length=2,choices = GENDER_CHOICE) - 6、max_length
- 7、default 默认值
- 8、verbose_name Admin中字段的显示名称
- 9、name|db_column 数据库中的字段名称
- 10、unique=True 不允许重复
- 11、db_index = True 数据库索引
- 12、editable=True 在Admin里是否可编辑
- 13、error_messages=None 错误提示
- 14、auto_created=False 自动创建
- 15、help_text 在Admin中提示帮助信息
- 16、validators=[]
- 17、upload-to
6.今天都复习了之前的什么内容