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 相关文章推荐
python类参数self使用示例
Feb 17 Python
Python入门篇之编程习惯与特点
Oct 17 Python
详解python OpenCV学习笔记之直方图均衡化
Feb 08 Python
pandas将numpy数组写入到csv的实例
Jul 04 Python
Pycharm配置远程调试的方法步骤
Dec 17 Python
Python实现的KMeans聚类算法实例分析
Dec 29 Python
python自动分箱,计算woe,iv的实例代码
Nov 22 Python
关于Python3 lambda函数的深入浅出
Nov 27 Python
Python中用pyinstaller打包时的图标问题及解决方法
Feb 17 Python
详解Pycharm出现out of memory的终极解决方法
Mar 03 Python
解决pycharm导入本地py文件时,模块下方出现红色波浪线的问题
Jun 01 Python
python3从网络摄像机解析mjpeg http流的示例
Nov 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
递归列出所有文件和目录
2006/10/09 PHP
模仿OSO的论坛(四)
2006/10/09 PHP
10个超级有用值得收藏的PHP代码片段
2015/01/22 PHP
支持中文、字母、数字的PHP验证码
2015/05/04 PHP
php使用正则表达式去掉html中的注释方法
2016/11/03 PHP
PHP依赖注入(DI)和控制反转(IoC)详解
2017/06/12 PHP
PHPTree――php快速生成无限级分类
2018/03/30 PHP
用js得到网页中所有的div的id
2020/10/19 Javascript
Javascript开发包大全整理
2006/12/22 Javascript
javascript 命名规则 变量命名规则
2010/02/25 Javascript
Extjs Ext.MessageBox.confirm 确认对话框详解
2010/04/02 Javascript
jquery动态改变onclick属性导致失效的问题解决方法
2013/12/04 Javascript
Js实现双击鼠标自动滚动屏幕的示例代码
2013/12/14 Javascript
通过js来制作复选框的全选和不选效果
2014/05/22 Javascript
跟我学习javascript的异步脚本加载
2015/11/20 Javascript
jQuery Validate表单验证入门学习
2015/12/18 Javascript
xmlplus组件设计系列之文本框(TextBox)(3)
2017/05/03 Javascript
prototype.js简单实现ajax功能示例
2017/10/18 Javascript
vue页面离开后执行函数的实例
2018/03/13 Javascript
vue中使用vue-cli接入融云实现即时通信
2019/04/19 Javascript
django自定义Field实现一个字段存储以逗号分隔的字符串
2014/04/27 Python
八大排序算法的Python实现
2021/01/28 Python
Python重新加载模块的实现方法
2018/10/16 Python
python进程池实现的多进程文件夹copy器完整示例
2019/11/27 Python
python numpy实现多次循环读取文件 等间隔过滤数据示例
2020/03/14 Python
Python如何把字典写入到CSV文件的方法示例
2020/08/23 Python
电子商务自荐书范文
2014/01/04 职场文书
拉歌口号大全
2014/06/13 职场文书
秋季运动会演讲稿
2014/09/16 职场文书
声乐专业大学生职业生涯规划书:理想的未来需要自己去打造
2014/09/20 职场文书
费用申请报告范文
2015/05/15 职场文书
魂断蓝桥观后感
2015/06/10 职场文书
pytorch实现ResNet结构的实例代码
2021/05/17 Python
Ajax实现异步加载数据
2021/11/17 Javascript
Windows 11要来了?微软文档揭示Win11太阳谷 / Win10有两个不同版本
2021/11/21 数码科技
MySQL表字段数量限制及行大小限制详情
2022/07/23 MySQL