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

怎么用vps搭建网站辽宁省营商环境建设监督局网站

怎么用vps搭建网站,辽宁省营商环境建设监督局网站,南通网站开发,三亚做网站那家效果好Auth模块引入 我们在创建一个Django项目之后#xff0c;直接执行数据库迁移命令会自动生成很多表 django_sessionauth_userDjango在启动之后就可以直接访问admin路由#xff0c;需要输入用户名和密码#xff0c;数据参考的就是auth_user表,并且必须是管理员用户才能进入 【…Auth模块引入 我们在创建一个Django项目之后直接执行数据库迁移命令会自动生成很多表 django_sessionauth_userDjango在启动之后就可以直接访问admin路由需要输入用户名和密码数据参考的就是auth_user表,并且必须是管理员用户才能进入 【1】创建超级用户(管理员) 在终端输入一下指令 python36 manage.py createsuperuser 在终端中操作 E:\Python39\python.exe E:\Pycharm\PyCharm 2023.1.3\plugins\python\helpers\pycharm\django_manage.py createsuperuser E:/Old Boy/django_project/day14 Tracking file by folder pattern: migrations Username (leave blank to use administrator): dream Email address: Warning: Password input may be echoed. Password: 521 Warning: Password input may be echoed. Password (again): 521 This password is too short. It must contain at least 8 characters. Bypass password validation and create user anyway? [y/N]: This password is entirely numeric.y Superuser created successfully.Process finished with exit code 0 【2】利用auth_user表完成登录注册功能 【2.0】基础登录 【2.0.1】配置路由 path(login/, views.login), 【2.0.2】前端代码 form action methodpost{# 取消crsf校验 #}{% csrf_token %}pusername:input typetext nameusername/pppassword:input typetext namepassword/pinput typesubmit classbtn btn-success /form 【2.0.3】后端代码 from django.shortcuts import render from django.contrib import auth# Create your views here. def login(request):if request.method POST:# 1 取到前端输入的用户名和密码username request.POST.get(username)password request.POST.get(password)# 2 进行用户名和密码的校验# 从用户表中获取数据# --- 1、表如何获取# --- 2、表中的密码是密文如何比对# 导入 auth 校验模块 from django.contrib import authuser_obj auth.authenticate(request, usernameusername, passwordpassword)# [1] 用户名和密码正确的情况下print(user_obj) # dream ---- 这是用户对象内部封装的一个方法 __str__ 方法print(user_obj.username) # dreamprint(user_obj.password) # pbkdf2_sha256$260000$011PbZAjKIWBfAUJ61Rcyn$vNUYq5L70/ljTLEeJ2dBJtDTEKFDTKzFioFPjZYMdU4# [2] 用户名和密码不正确的情况下print(user_obj) # None ---- 如果数据不符合则返回None【1】自动查找 auth_user 表【2】自动给密码加密进行比对注意事项参数必须传入用户名和密码不能只传入一个用户名(一步就帮助我们筛选出用户数据)return render(request, login.html) 【2.1】保存用户状态 如果使用auth模块就使用其中所有封装好的方法 如果不想使用就单独封装方法不要调用其中的方法 auth.login(request, user_obj)   类似于    request.session[key] user_obj只要执行了上面的方法就可以在任何地方通过 request.user获取当前用户的登录对象 from django.shortcuts import render from django.contrib import auth# Create your views here. def login(request):if request.method POST:# 1 取到前端输入的用户名和密码username request.POST.get(username)password request.POST.get(password)# 2 进行用户名和密码的校验# 从用户表中获取数据# --- 1、表如何获取# --- 2、表中的密码是密文如何比对# 导入 auth 校验模块 from django.contrib import authuser_obj auth.authenticate(request, usernameusername, passwordpassword)# 判断当前用户是否存在 --- 存在则有值不存在则返回Noneif user_obj:# 保存用户状态auth.login(request, user_obj) # 类似于 request.session[key] user_obj# 只要执行了上面的方法就可以在任何地方通过 request.user 获取当前用户的登录对象【1】自动查找 auth_user 表【2】自动给密码加密进行比对注意事项参数必须传入用户名和密码不能只传入一个用户名(一步就帮助我们筛选出用户数据)return render(request, login.html) 【2.2】登录后跳转 from django.shortcuts import render, redirect, HttpResponse from django.contrib import auth# Create your views here. def login(request):if request.method POST:# 1 取到前端输入的用户名和密码username request.POST.get(username)password request.POST.get(password)# 2 进行用户名和密码的校验# 从用户表中获取数据# --- 1、表如何获取# --- 2、表中的密码是密文如何比对# 导入 auth 校验模块 from django.contrib import authuser_obj auth.authenticate(request, usernameusername, passwordpassword)# 判断当前用户是否存在 --- 存在则有值不存在则返回Noneif user_obj:# 保存用户状态auth.login(request, user_obj) # 类似于 request.session[key] user_obj# 只要执行了上面的方法就可以在任何地方通过 request.user 获取当前用户的登录对象# 登陆成功后跳转页面return redirect(/home/)【1】自动查找 auth_user 表【2】自动给密码加密进行比对注意事项参数必须传入用户名和密码不能只传入一个用户名(一步就帮助我们筛选出用户数据)return render(request, login.html)def home(request):print(request.user) # dream ---- 这是用户对象内部封装的一个方法 __str__ 方法print(request.user)# 登陆成功 dream ---- 这是用户对象内部封装的一个方法 __str__ 方法# 未登录访问 AnonymousUser ---- 匿名用户# 本质上是自动去django_session里面查找到当前用户对象然后封装到 request.user 中return HttpResponse(OK) 判断用户是否登录 def home(request):print(request.user)# 登陆成功 dream ---- 这是用户对象内部封装的一个方法 __str__ 方法# 未登录访问 AnonymousUser ---- 匿名用户# 本质上是自动去django_session里面查找到当前用户对象然后封装到 request.user 中# 判断用户是否登陆print(request.user.is_authenticated()) # 匿名用户返回 Falsereturn HttpResponse(OK) 【2.2.1】登录后才能访问页面 -------- 局部配置 from django.contrib.auth.decorators import login_required# 添加装饰器 --- 指定未登录的跳转页面 login_required(login_url/login/) # 局部配置 def home(request):用户登录后才能访问的页面print(request.user)# 登陆成功 dream ---- 这是用户对象内部封装的一个方法 __str__ 方法# 未登录访问 AnonymousUser ---- 匿名用户# 本质上是自动去django_session里面查找到当前用户对象然后封装到 request.user 中# 判断用户是否登陆print(request.user.is_authenticated()) # 匿名用户返回 Falsereturn HttpResponse(OK) 【2.2.2】登录后才能访问页面 ----- 全局配置 在settings文件中添加 LOGIN_URL /login/ from django.contrib.auth.decorators import login_required# 添加装饰器 --- 指定未登录的跳转页面 login_required def home(request):用户登录后才能访问的页面print(request.user)# 登陆成功 dream ---- 这是用户对象内部封装的一个方法 __str__ 方法# 未登录访问 AnonymousUser ---- 匿名用户# 本质上是自动去django_session里面查找到当前用户对象然后封装到 request.user 中# 判断用户是否登陆print(request.user.is_authenticated()) # 匿名用户返回 Falsereturn HttpResponse(OK)login_required def index(request):return HttpResponse(index) 【2.3】小结 局部/全局优先级 局部大于全局各自的优点 全局的优点 无需书写重复的代码但是页面的跳转很单一局部的优点 在于不同的视图函数再用户没有登录的情况下可以跳转到不同的页面 【3】修改密码 【3.1】路由文件的配置 # 修改密码 path(set_password/, views.set_password), 【3.2】后端代码 login_required def set_password(request):if request.method POST:old_password request.POST.get(old_password)new_password request.POST.get(new_password)confirm_password request.POST.get(confirm_password)# 先校验两次密是否一致if new_password confirm_password:# 校验旧密码是否相同is_right request.user.check_password(old_password) # 内部自己加密密码进行比对# 返回的结果为 True 或者 Falseif is_right:# 修改密码request.user.set_password(confirm_password) # 仅仅在修改对象的属性# 修改完密码后进行保存数据request.user.save()return redirect(/login/)return render(request, set_password.html, locals()) 【3.3】前端代码 form action methodpost{# 取消crsf校验 #}{% csrf_token %}pusername:input typetext nameusername disabled value{{ request.user.username }}/ppold_password:input typetext nameold_password/ppnew_password:input typetext namenew_password/ppconfirm_password:input typetext nameconfirm_password/pinput typesubmit classbtn btn-success /form 【4】注销 【4.1】路由配置 # 注销用户 path(login_out/, views.login_out), 【4.2】后端代码 login_required def login_out(request):auth.logout(request) # 清空当前登录用户的数据 ----- request.session.flush()return redirect(/login/) 【5】注册功能 【5.1】路由配置 # 注册用户 path(register/, views.register), 【5.2】后盾 def register(request):if request.method POST:username request.POST.get(username)password request.POST.get(password)confirm_password request.POST.get(confirm_password)# 操作auth_user表写入数据# User.objects.create(usernameusername, passwordconfirm_password) # 会写入数据但是保存的密码是明文的没有加密# 创建普通用户User.objects.create_user(usernameusername, passwordconfirm_password)# 创建超级用户 - 了解 --- 使用代码创建超级用户邮箱和密码是必填的而用命令创建可以忽略邮箱# User.objects.create_superuser(usernameusername, passwordpassword,emailemail)return render(request, register.html) 【6】总结 【6.1】校验密码是否正确 from django.contrib import auth # 1 取到前端输入的用户名和密码 username request.POST.get(username) password request.POST.get(password) # 2 进行用户名和密码的校验 ---- 参数必须传用户名和密码 user_obj auth.authenticate(request, usernameusername, passwordpassword)# [1] 用户名和密码正确的情况下 print(user_obj) # dream ---- 这是用户对象内部封装的一个方法 __str__ 方法 print(user_obj.username) # dream print(user_obj.password) # pbkdf2_sha256$260000$011PbZAjKIWBfAUJ61Rcyn$vNUYq5L70/ljTLEeJ2dBJtDTEKFDTKzFioFPjZYMdU4# [2] 用户名和密码不正确的情况下 print(user_obj) # None ---- 如果数据不符合则返回None 【6.2】保存用户状态 # 判断当前用户是否存在 --- 存在则有值不存在则返回None if user_obj:# 保存用户状态auth.login(request, user_obj) # 类似于 request.session[key] user_obj# 只要执行了上面的方法就可以在任何地方通过 request.user 获取当前用户的登录对象 【6.3】判断当前用户是否登录 # 判断用户是否登陆 # 匿名用户返回 False 正常用户返回 True print(request.user.is_authenticated) 【6.4】获取当前登录的用户 print(request.user) # 登陆成功 dream ---- 这是用户对象内部封装的一个方法 __str__ 方法 # 未登录访问 AnonymousUser ---- 匿名用户 # 本质上是自动去django_session里面查找到当前用户对象然后封装到 request.user 中 【6.5】检验用户是否登录装饰器 from django.contrib.auth.decorators import login_required 1、局部配置2、全局配置3、全局/局部的优缺点 【6.6】校验原密码 # 校验旧密码是否相同 is_right request.user.check_password(old_password) # 内部自己加密密码进行比对 # 返回的结果为 True 或者 False 【6.7】修改密码 # 修改密码 request.user.set_password(confirm_password) # 仅仅在修改对象的属性 # 修改完密码后进行保存数据 request.user.save() 【6.8】注销登录用户 auth.logout(request) # 清空当前登录用户的数据 ----- request.session.flush() 【6.9】注册 # 操作auth_user表写入数据 # 会写入数据但是保存的密码是明文的没有加密 User.objects.create(usernameusername, passwordconfirm_password) # 创建普通用户 User.objects.create_user(usernameusername, passwordconfirm_password)# 创建超级用户 - 了解 --- 使用代码创建超级用户邮箱和密码是必填的而用命令创建可以忽略邮箱 User.objects.create_superuser(usernameusername, passwordpassword,emailemail) 【7】扩展auth_user表 【7.1】方式一 from django.db import models from django.contrib.auth.models import User, AbstractUser# Create your models here. # 扩展 auth_user 表 # 第一种方式 一对一关系(不推荐) class UserDetail(models.Model):phone models.CharField(max_length32)user models.OneToOneField(toUser, on_deletemodels.CASCADE) 【7.2】方式二 from django.db import models from django.contrib.auth.models import User, AbstractUser# 第二种方式 面向对象的继承 class UserInfo(AbstractUser):如果继承了AbstractUser那么在执行数据库迁移命令的时候auth_user表就不会被创建而 UserInfo 会在 auth_user表 的基础上添加自定义扩展的字段优点直接通过自己定义的表快速完成操作及扩展前提1在执行之前没有执行过数据库迁移命令auth_user 表没有被创建如果当前库已经被创建则需要更换新的库2继承的表里面不要覆盖 AbstractUser 里面的字段名表里面有的字段不要动只扩展额外的字段即可3需要再配置文件中声明Django要使用 UserInfo 替代 auth_userAUTH_USER_MODEL app01.UserInfo ---应用名.表名phone models.CharField(max_length32) 需要再配置文件中声明Django要使用UserInfo代替auth_user AUTH_USER_MODEL app01.UserInfo ---应用名.表名 如果自己写表代替了auth_userauth模块功能正常使用参考的表也由auth_user变成了UserInfo
http://www.zqtcl.cn/news/320426/

相关文章:

  • asp国外网站什么页游好玩
  • 高端简约30平米办公室装修广州搜索seo网站优化
  • 海口的网站建设公司wordpress二次元极简主题
  • 南京快速建站公司国家网站域名
  • 兰州装修公司哪家好网站seo推广员招聘
  • 郑州网站推广 汉狮网络易企秀类似的软件
  • 做外单网站成都网页制作公司排名
  • 成都优化网站关键词搜索引擎有哪些平台
  • 福建百川建设有限公司网站郑州手机软件开发公司
  • 盐城企业做网站多少钱88建网站
  • 南京网站制作报价wordpress主题 yusi
  • 北京建网站已备案网站新增接入
  • 做搬家服务网站问卷调查的目的房产网签是什么意思
  • 江苏品牌网站设计美团后台管理系统登录
  • 没有备案的网站会怎么样深圳的互联网公司排名
  • 阿里云 建设网站北京百度竞价托管公司
  • 怎么样做长久的电影网站安卓手机应用市场
  • 网站建设账户搭建济南网络优化哪家专业
  • 宜兴城乡建设局网站wordpress调用logo
  • 让他人建设网站需要提供的材料女生读电子商务好就业吗
  • 北大荒建设集团网站国内开源代码网站
  • 高端企业网站要多少钱中企动力z云邮箱登录
  • 网站建设视频教程百度云那种自行提取卡密的网站怎么做
  • 网站外链建设与维护网站建设客户调研表
  • 海南省建设银行官方网站招聘营销的主要目的有哪些
  • flask 简易网站开发网站建设和空间
  • 怀化建设网站wordpress静态化插件
  • 网站上的中英文切换是怎么做的大连网站制作优选ls15227
  • 网站开发工作安排广告设计公司有哪些
  • 无人机公司网站建设用什么软件做网站最简单