django写用户登录判定并跳转制定页面的实例


Posted in Python onAugust 21, 2019

1. 首先看要设置登陆的界面 book/view.py

@user_util.my_login #相当于 select_all=my_login(select_all)
def select_all(request):
 # 查询所有的书
 book_list = BookInfo.objects.all()
 # 返回
 return render(request, 'book/book_list.html', {'book_list': book_list})


@user_util.my_login #相当于 select_by_id=my_login(select_by_id)
def select_by_id(request,book_id):
 bookinfo=BookInfo.objects.get(id=book_id)
 return render(request,'book/book_detail.html',{'bookinfo':bookinfo})

@user_util.my_login 是在utils/user_utils.py里面写的装饰器

使用session判定是否登录:login_user_id = args[0].session.get(‘login_user_id')

#登陆用的装饰器

def my_login(func):
 def inner(*args,**kwargs):
  login_user_id = args[0].session.get('login_user_id')
  if login_user_id:
   return func(*args,**kwargs)
  else:
   return redirect(reverse('user:login'))
 return inner

2. 设置登录模块的界面

设置session键值对进行存储: request.session[‘login_user_id']=user[0].id

def login(request):
 #获取cookie
 remember_user_name=request.COOKIES.get('remember_user_name','')
 return render(request, "user/login.html",{'remember_user_name':remember_user_name})


def login_handler(request):
 # 判断请求方式
 if request.method == "GET":
  request_info = request.GET
 else:
  request_info = request.POST

 # 获取属性
 user_name = request_info.get("user_name",'').strip()
 user_pwd = request_info.get("user_pwd",'').strip()
 remember = request_info.get("remember")
 user_pwd = my_md5(user_pwd)
 user=User.objects.filter(name=user_name, pwd=user_pwd)
 #print(user[0].id)

 # 查询
 if len(user) != 0:
  #将登陆信息保存到session
  request.session['login_user_id']=user[0].id
  resp=HttpResponseRedirect(reverse("book:index"))
  #记住用户名
  if remember=='1':
   resp.set_cookie('remember_user_name',user_name,3600*24*7)
  else:
   resp.set_cookie('remember_user_name',user_name,0)
  return resp


  # 转发
  #return book_views.index(request)
  # 重定向
  #return HttpResponseRedirect(reverse("book:index"))

 else:

  return HttpResponseRedirect(reverse("user:login"))

以上这篇django写用户登录判定并跳转制定页面的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
写了个监控nginx进程的Python脚本
May 10 Python
详解python的数字类型变量与其方法
Nov 20 Python
python 捕获 shell/bash 脚本的输出结果实例
Jan 04 Python
python中for循环输出列表索引与对应的值方法
Nov 07 Python
Python 获取项目根路径的代码
Sep 27 Python
Python 类,property属性(简化属性的操作),@property,property()用法示例
Oct 12 Python
Python内置函数locals和globals对比
Apr 28 Python
Pytorch转tflite方式
May 25 Python
Tensorflow tensor 数学运算和逻辑运算方式
Jun 30 Python
浅谈盘点5种基于Python生成的个性化语音方法
Feb 05 Python
python开发实时可视化仪表盘的示例
May 07 Python
一起来学习Python的元组和列表
Mar 13 Python
Django自定义模板过滤器和标签的实现方法
Aug 21 #Python
扩展Django admin的list_filter()可使用范围方法
Aug 21 #Python
python机器学习包mlxtend的安装和配置详解
Aug 21 #Python
python 画出使用分类器得到的决策边界
Aug 21 #Python
Django url,从一个页面调到另个页面的方法
Aug 21 #Python
python requests更换代理适用于IP频率限制的方法
Aug 21 #Python
docker django无法访问redis容器的解决方法
Aug 21 #Python
You might like
如何将数据从文本导入到mysql
2006/10/09 PHP
php循环输出数据库内容的代码
2008/05/24 PHP
php htmlspecialchars加强版
2010/02/16 PHP
基于asp+ajax和数据库驱动的二级联动菜单
2010/05/06 PHP
将php数组输出html表格的方法
2014/02/24 PHP
destoon供应信息title调用出公司名称的方法
2014/08/22 PHP
thinkPHP基于ajax实现的菜单与分页示例
2016/07/12 PHP
JavaScript入门教程(2) JS基础知识
2009/01/31 Javascript
jquery异步循环获取功能实现代码
2010/09/19 Javascript
Jquery知识点二 jquery下对数组的操作
2011/01/15 Javascript
使图片旋转的3种解决方案
2013/11/21 Javascript
Jquery中$.post和$.ajax的用法小结
2015/04/28 Javascript
js调出上下文菜单的实例
2015/12/17 Javascript
jQuery Ajax页面局部加载方法汇总
2016/06/02 Javascript
Bootstrap源码学习笔记之bootstrap进度条
2016/12/24 Javascript
详解vue.js 开发环境搭建最简单攻略
2017/06/12 Javascript
javascript实现摄像头拍照预览
2019/09/30 Javascript
JS实现前端动态分页码代码实例
2020/06/02 Javascript
vant中的toast轻提示实现代码
2020/11/04 Javascript
[36:13]Mineski vs iG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python单线程文件传输的实例(C/S)
2019/02/13 Python
scrapy-redis源码分析之发送POST请求详解
2019/05/15 Python
如何通过python画loss曲线的方法
2019/06/26 Python
Python sklearn中的.fit与.predict的用法说明
2020/06/28 Python
python 中的命名空间,你真的了解吗?
2020/08/19 Python
Html5实现首页动态视频背景的示例代码
2019/09/25 HTML / CSS
全球速卖通法国在线交易平台:AliExpress法国
2017/07/07 全球购物
Hawes & Curtis官网:英国经典品牌
2019/07/27 全球购物
实习护士自我鉴定
2013/10/13 职场文书
小学生检讨书大全
2014/02/06 职场文书
大学生实习证明
2015/06/16 职场文书
小学生读书笔记范文
2015/06/30 职场文书
Oracle11g r2 卸载干净重装的详细教程(亲测有效已重装过)
2021/06/04 Oracle
Redis如何实现分布式锁
2021/08/23 Redis
《黑岩★★射手 DAWN FALL》BD发售宣传CM公开
2022/04/04 日漫
使用 Docker Compose 构建复杂的多容器App
2022/04/30 Servers