Django实战之用户登录

对与Django认证系统使用默认的auth就可以了,但默认的有时无法满足我们的业务需求,需要额外的定制才能满足,例如用户表,默认情况下是没有手机号,昵称,头像这些字段的,那如果我需要,怎么办?还有我们认证也仅支持用户名与密码,如果我想认证可以实现用户名或者邮箱或者手机号+密码方式认证呢?

今天我就要来解决下面的2个问题.

1)原先的user表字段

(username,password,first_name,last_name,email,last_login,is_superuser,is_staff,is_active,date_joined),仅有这10个,因我也需要记录用户手机号(可能还需要记录用户昵称,头像等,此案例中我仅扩展一个手机号字段,若添加其它字段则和此手机号字段一样),所以暂时看起来无法满足现在的需求,所以我们需要重新定义user表.

2)原先的认证,仅支持用户名+密码,现在我们需要实现(用户名或邮箱或手机号)+密码这种方式认证登录.

下面开始动手做起来.

1)启动一个user应用startappuser

2)定义一个UserProfile表

3)settings.py中设置

应用相关配置

INSTALLED_APPS = [

…………

‘user.apps.UserConfig’,

]

2 mysql数据库驱动

3 定义扩展的Auth表

“””

认证相关

“””

AUTH_USER_MODEL= ‘user.UserProfile’

3.4 定义一个静态文件路径,将css/js/image放与此目录下.

STATIC_URL =’/static/‘

STATICFILES_DIRS= (

os.path.join(BASE_DIR, “static”),

)

4)接下来去创建相应的表

makemigrations

migrate

查看mysql数据库,有相应的表与mobile字段.

5)设置一个超级用户,用与登录验证.

manage.py@django_edu> createsuperuser

Username: opdevos

Emailaddress: opdevos@opdevos.com

Warning:Password input may be echoed.

Password: admin123

Warning:Password input may be echoed.

Password(again): admin123

Superuser created successfully.

好了,数据准备工作做好了。我们就去写相关的逻辑程序与前台显示页面吧.

urls.py

views.py

此时需要在settings.py中设置自定义的认证.

“””

认证相关

“””

AUTH_USER_MODEL= ‘user.UserProfile’

设置邮箱或手机号或用户名均可登录

AUTHENTICATION_BACKENDS= (

‘user.views.CustomBackend’,

)

login.html

index.html

以下是验证相关图片.

访问

输入用户名+密码

退出,再用邮箱+密码登录.

退出,再用手机号+密码登录.

哈哈。看到没,三种登录方式都已经成功了.

对与数据检验,我这里没有去做,不过,可以在我下一篇实战用户注册这块来弥补.

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190114G08IKH00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券