2020.5.12 用户认证,面试技能

发布于 2020-05-12  41 次阅读


Table of Contents


f.write(file.file.read())
return HttpResponse("接收文件成功")

  • image_file = models.ImageField(upload_to='images/')
    • 需要安装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()
      • 修改密码
        1. 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)
          1. 自动将用户id保存session中
        • 注销logout(request)
          1. 删除session存放的用户id
    1. 查看已登陆用户
  • 自定义用户模型

    *   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.今天都复习了之前的什么内容