Django笔记-08
[toc] django教程day08

Django中的用户认证 (使用Django认证系统)

  • Django带有一个用户认证系统。 它处理用户账号、组、权限以及基于cookie的用户会话。

  • 作用:

    1. 添加普通用户和超级用户
    2. 修改密码
    3. 登陆和退出管理
    4. 查看已登陆用户
  • 文档参见

  • User模型类

    • 位置: from django.contrib.auth.models import User
  • 默认user的基本属性有: | 属性名 | 类型 | 是否必须存在 | |-|-|-| username | 用户名 | 是 password | 密码 | 是 email | 邮箱 | 可选 first_name | 名 last_name | 姓 is_superuser | 是否是管理员帐号(/admin) is_staff | 是否可以访问admin管理界面 is_active | 是否是活跃用户,默认True。一般不删除用户,而是将用户的is_active设为False。 last_login | 上一次的登录时间 date_joined | 用户创建的时间

  • 数据库表现形式

auth基本模型操作:

  • 创建用户

    • 创建普通用户create_user

    • 创建超级用户create_superuser

  • 删除用户

  • 修改密码set_password

  • 检查密码是否正确check_password

Web请求中的认证

  • 相关函数

  • from django.contrib.auth import authenticate, login, logout

  • 认证用户

    • 函数 authenticate(username='用户名', password='原始密码')

    • 作用验证用户名和密码是否存在于用户中.如果存在返回User对象,如果不合法返回None

    • 示例

  • 登陆用户

    • 函数 login(request, user)

    • 参数request 为 个HttpRequest对象

    • 参数 user 为一个User对象

    • login()使用Django的session框架来将用户的ID保存在session中。

    • 示例

  • 登出用户

    • 函数 logout(request)

    • 通过已经通过django.contrib.auth.login()登入的用户,可以使用django.contrib.auth.logout()退出登陆

    • 示例:

自定义User模型

  • 当django自带的 django.contrib.auth.models.User 的属性不能满足我们现有的需求时,可以自定义User模型
  • 如,向用户中加入姓别和家庭住址字段等
  • 自定义User 类需要继承自 django.contrib.auth.models.AbstractUser, 如:

项目部署

  • 项目部置在软件开发完毕后,将开发机器上运行的开发板软件实际安装到服务器上进行长期运行

  • 部署要分以下几个步骤进行

    1. 在安装机器上安装和配置同版本的数据库
    2. django 项目迁移(在安装机器上配置与开发环境相同的python版本及依懒的包)
    3. 用 uwsgi 替代python3 manage.py runserver 方法启动服务器
    4. 配置 nginx 反射代理服务器
    5. 用nginx 配置静态文件路径,解决静态路径问题
  1. 安装同版本的数据库

    • 安装步骤略
  2. django 项目迁移

    1. 安装python

      • $ sudo apt install python3
    2. 安装相同版本的包

      • 导出当前模块数据包的信息:

        • $ pip3 freeze > package_list.txt
      • 导入到另一台新主机

        • $ pip3 install -r package_list.txt
    3. 将当前项目源代码复制到运程主机上(scp 命令)

      • $ sudo scp -a 当前项目源代码 远程主机地址和文件夹
  3.  

WSGI Django工作环境部署

  • WSGI (Web Server Gateway Interface)Web服务器网关接口,是Python应用程序或框架和Web服务器之间的一种接口,被广泛使用
  • 它实现了WSGI协议、http等协议。Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换。WSGI是一种Web服务器网关接口。

uWSGI 网关接口配置

  • 使用 python manage.py runserver 通常只在开发和测试环境中使用。

  • 当开发结束后,完善的项目代码需要在一个高效稳定的环境中运行,这时可以使用uWSGI

  • uWSGI是WSGI的一种,它可以让Django、Flask等开发的web站点运行其中.

  • 安装uWSGI $ sudo pip3 install uwsgi

  • 配置uWSGI

    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的运行管理

    • 启动 uwsgi

    • 停止 uwsgi

    • 说明:

      • 当uwsgi 启动后,当前django项目的程序已变成后台守护进程,在关闭当前终端时此进程也不会停止。
  • 测试:

nginx 反射代理配置

  • Nginx是轻量级的高性能Web服务器,提供了诸如HTTP代理和反向代理、负载均衡、缓存等一系列重要特性,在实践之中使用广泛。

  • C语言编写,执行效率高

  • nginx 作用

    • 负载均衡, 多台服务器轮流处理请求
    • 反射代理
  • 原理:

  • 客户端请求nginx,再由nginx 请求 uwsgi, 运行django下的python代码

  • ubuntu 下 nginx 安装 $ sudo apt install nginx

  • nginx 配置

    • 修改nginx 的配置文件 /etc/nginx/sites-available/default
  • 启动 nginx

    • $ sudo /etc/init.d/nginx start
    • $ sudo service nginx restart
  • 查看nginx进程

    • $ ps aux | grep nginx
    • $ sudo /etc/init.d/nginx status
    • $ sudo service nginx status
  • 停止nginx

    • $ sudo /etc/init.d/nginx stop
    • $ sudo service nginx stop
  • 重启nginx

    • $ sudo /etc/init.d/nginx restart
    • $ sudo service nginx restart
  • 修改uWSGI配置

    • 修改项目文件夹/uwsgi.ini下的Http通信方式改为socket通信方式,如:
    • 重启uWSGI服务
  • 修改配置文件后需要重新启动 nginx 服务

404 界面

  • 在模板文件夹内添加 404.html 模版,当响应返回HttpResponseNotFound 或 raise Http404时将会被显示

  • 404.html 仅在发布版中(即setting.py 中的 DEBUG=False时) 才起作用

  • 当向应处理函数触发Http404异常时就会跳转到404界面

 

 

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇