当前位置: 首页 > news >正文

做定制商品的网站百度竞价规则

做定制商品的网站,百度竞价规则,聊天网站站怎么做,昌乐网站设计Django 内置一个 auth 模块,帮助用户实现注册、登录、注销以及修改密码等功能,帮助开发者省去了很多功夫。 auth 模块 在创建模型时,Django内部会生成一个名为 auth_user 的数据表,用于存储认证的用户信息。 auth 模块提供了一系列…

Django 内置一个 auth 模块,帮助用户实现注册、登录、注销以及修改密码等功能,帮助开发者省去了很多功夫。

auth 模块

在创建模型时,Django内部会生成一个名为 auth_user 的数据表,用于存储认证的用户信息。

auth 模块提供了一系列的方法,使用之前需要导入:

from django.contrib import auth

authenticate() 方法

提供用户认证功能,验证用户名和密码是否正确等。如验证成功,则返回一个 User 对象。

from django.contrib import authdef login(request):if request.method == 'POST':username = request.POST.get('username')password = request.POST.get('password')# 用户认证,验证用户名、密码是否正确,并返回一个 user 对象# username、password 字段对应 auth_user 表中相应字段user_obj = auth.authenticate(username=username, password=password)

login() 方法

实现用户登录功能,会在后台为登录用户生成 session 数据。

from django.contrib import auth
auth.login(request, user_obj)from django.contrib.auth import login
login(request, user_obj)

接收两个参数,第一个为 HTTPRequest 对象,以及一个认证过的用户对象(即 authenticate() 认证过的用户对象)。

from django.contrib import authdef login(request):"""登录"""if request.method == 'POST':username = request.POST.get('username')password = request.POST.get('password')# 用户认证,验证用户名、密码是否正确,并返回一个 user 对象user_obj = auth.authenticate(username=username, password=password)if user_obj:# 将验证成功的用户封装到 request.user 对象中auth.login(request, user_obj)return redirect('home')else:return '错误信息'return render(request, 'login.html')

认证成功的用户对象,执行 login() 方法,实现登录功能,否则返回错误信息。

Tips

执行过 login() 方法的用户对象,就能通过request.user 拿到当前登录的用户对象,从而取出用户的相关信息,否则取得的将是一个匿名用户对象 AnonymounsUser Object

login(request, user_obj)
# 获得当前登录用户对象
user = request.user
# 获得当前登录用户对象的用户名
username = request.user.username

logout() 方法

该方法实现注销功能,清除当前登录用户数据库中的 session 数据,接收一个 HttpRequest 对象,无返回值。

from django.contrib import authdef logout(request):"""注销"""auth.logout(request)# 注销后重定向到登录页面return redirect('login')

is_authenticated 属性

判断当前用户是否通过认证,为布尔值。

def home(request):"""首页"""ret = request.user.is_authenticatedprint(ret)      # True

login_required() 方法

auth 模板提供的一个装饰器工具,能够便捷地为某个视图添加登录校验。

  • 若用户没有登录,则默认会跳转到 accounts/login/,并传递当前访问 url 绝对路径。
  • 自定义跳转路径,只需在 settings.py 中添加:
# 当用户没有登录,访问某个视图时将会跳转到登录页面
LOGIN_URL = '/login/'
from django.contrib.auth.decorators import login_required# 添加装饰器
@login_required
def home(request):"""首页"""return render(request, 'home.html')

当用户访问 home 页面时,若没有登录则会跳转到登录页面,否则返回 home 页面。

用户相关

上面介绍的都是关于登录相关的,下面将介绍如何创建在 auth_user 中创建用户,修改密码,验证密码等。

create_superuser() 方法

该方法用于创建一个超级用户,接收 username、password 两个必要参数。效果与执行 python manage.py createsuperuser 等同。

from django.contrib.auth.models import Useruser_obj = User.objects.create_superuser(username='用户名',password='密码',email='邮箱',...)

create_user() 方法

一般情况 create_superuser() 方法很少使用,最常使用的是create_user() 方法,它将会创建一个普通用户,常应用于注册视图中。

创建用户所需字段,应与 auth_user 数据表中字段对应。

from django.contrib.auth.models import Userdef signup(request):# 创建新用户user_obj = User.objects.create_user(username='lila', password='1234')return HttpResponse('创建成功')

Tips

新创建的用户,保存在 auth_user数据表中的密码是经过加密的。

check_password() 方法

检查登录用户密码是否正确,需要当前请求用户的密码。

from django.contrib.auth.models import Userdef signup(request):# 创建新用户user_obj = User.objects.create_user(username='lila', password='1234')ret = user_obj.check_password('123456')print(ret)      # Falsereturn HttpResponse('创建成功')

密码正确返回 True,否则返回 False。

或者对当前请求的 user 对象校验原密码是否正确:

obj = request.user.check_password(raw_password='原始密码')

set_password() 方法

该方法用于修改密码,接收要新密码作为参数,最后一定要执行 save() 方法保存,否则无效。

def set_password(request):"""修改密码,request.user 中封装了已认证且执行了登录功能的用户对象:param request: :return: """request.user.set_password('12')password = request.user.passwordrequest.user.save()print(password)return HttpResponse('修改成功')

修改密码示例

该示例仅适用于已登录的用户,在内部修改密码,未登录的用户将跳转到登录页面。

from django.shortcuts import render, redirect, HttpResponse
from django.contrib.auth.decorators import login_required@login_required
def set_password(request):"""修改密码,request.user 中封装了已认证且执行了登录功能的用户对象:param request::return:"""user = request.userret = {'message': None}if request.method == 'POST':old_password = request.POST.get('old_password')new_password = request.POST.get('new_password')# 重复新密码repeat_password = request.POST.get('repeat_password')# 检查旧密码是否正确if user.check_password(old_password):if not new_password:ret['message'] = '新密码不能为空'elif new_password != repeat_password:ret['message'] = '两次密码输入不一致'else:user.set_password(new_password)user.save()return redirect('login')else:ret['message'] = '原密码不正确'return render(request, 'set_password.html', ret)

auth 模块拓展

由于 auth 模板中 auth_user 数据表字段是固定的,因此当我们使用 auth 模块,想要添加额外的字段时,就需要对其进行拓展。

拓展方法有两种:

  • 模型中新增一个表,与 auth_user 表一对一关联
  • 继承内置的 AbstractUser 类:常用
  1. 模型 models.py 中新建一个类,继承自 AbstractUser
from django.contrib.auth.models import User, AbstractUser   # 导入 AbstractUser 类class UserInfo(AbstractUser):"""继承 AbstractUser新增字段:phone、addr"""phone = models.CharField(max_length=11, verbose_name='手机号码')addr = models.CharField(max_length=128, verbose_name='家庭地址')
  1. 配置 settings.py

新增的类继承 AbstractUser ,拓展后将会覆盖 auth_user 表,因此需要配置 settings,使默认认证知道要使用哪种表认证。

# settings.py
# 在最后添加如下代码
AUTH_USER_MODEL = 'app名.新增的类名'AUTH_USER_MODEL = 'app.UserInfo'    # 示例
  1. 迁徙数据表
python manage.py makemigrations
python manage.py migrate
  1. 创建用户

拓展 auth 模块后,使用的不再是原来 auth_user 表,而是新表 app.UserInfo 表,因此在创建用户时应该注意。

# 拓展之前
from django.contrib.auth.models import User
user_obj = User.objects.create_user(username='lila', password='1234')# 拓展之后
from app.models import UserInfo
user_obj = UserInfo.objects.create_user(username='lila', password='1234')

Tips

  • 若已经迁徙了模型,拓展 auth 模块时,需要将 migrations 文件夹下文件(如:0001_initial.py文件删除),否则会报 ValueError: Related model u'app.model' cannot be resolved
  • 若还没有迁徙模型,那么正常执行即可。

转载于:https://www.cnblogs.com/midworld/p/10992027.html

http://www.lbrq.cn/news/2649331.html

相关文章:

  • 官方网站做兼职seo网站推广seo
  • 19年做哪个网站致富珠海seo快速排名
  • 宁波城乡建设委员会的网站微信软文广告经典案例
  • 荣耀手机官方网站传统营销与网络营销的整合方法
  • 各大网站搜索引擎入口重庆网站seo外包
  • 哈尔滨工程研究生招生信息网达州seo
  • wordpress 产品展示插件seo研究中心怎么了
  • 网络代理记账seo关键词优化服务
  • 网站开发简历 自我评价seo网站建设优化
  • 网站推广与营销足球比赛今日最新推荐
  • 温州seo代理优秀网站seo报价
  • 金州网站建设百度 营销中心
  • 奥鹏网页设计与网站建设进一步优化营商环境
  • 网站域名试用期中国推广网
  • 企业网站的建设费用腾讯云服务器
  • 山东建设厅官方网站二建报名非国产手机浏览器
  • 做网站需要什么配置服务器吗小说关键词提取软件
  • 做网站多少钱 优帮云东莞最新消息 今天
  • 如何去除网站外链最近的新闻大事10条
  • 长沙做网站街前端seo主要优化哪些
  • 网站后台用什么程序做网站制作策划
  • 东莞清溪网站建设新网站怎么快速收录
  • 怎么在雅虎做网站收入百度百度一下你就知道
  • 在印度做视频网站沈阳网站制作公司
  • 哪个网站做马代路线好友情链接的四个技巧
  • 大连金州网站建设百度推广技巧方法
  • 那个网站可以做微课app推广全国代理加盟
  • 受欢迎的佛山网站制作传媒公司
  • 做网站公司名字关键词seo排名公司
  • 网站开发一年费用总计建网站免费
  • 学习:JS[8]本地存储+正则表达式
  • 机器翻译正则化技术详解:防止过拟合的有效方法
  • Vue3环境搭建+Mybatis-plus的使用
  • 大模型SSE流式输出技术
  • 【从0到1制作一块STM32开发板】6. PCB布线--信号部分
  • 【代码随想录day 14】 力扣 104.二叉树的最大深度