2020.5.12 用户认证,面试技能

发布于 22 天前  11 次阅读


1.复习内容

2.灵感代办

  • python 面试必备
    • 常用数据结构和算法
    • 常用标准库和第三方模块
    • docker学习
    • 数学,英语

3.学习内容

  • STATICFILES_DIR生效

    • 只在debug模式下
  • HTML from上传

    • form中应带有 enctype="multipart/form-data"
    • 上传按钮样式
    • 服务端获取上传文件流 file = request.FILES['xxx']
    • with open(filename, 'wb') as f:
      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.今天都复习了之前的什么内容


Ares个人进阶之路