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的Django框架中的模版继承
Jul 16 Python
Python使用pygame模块编写俄罗斯方块游戏的代码实例
Dec 08 Python
深入解析Python的Tornado框架中内置的模板引擎
Jul 11 Python
Python使用pymysql小技巧
Jun 04 Python
Python基于回溯法子集树模板解决最佳作业调度问题示例
Sep 08 Python
Python语言生成水仙花数代码示例
Dec 18 Python
pandas中的DataFrame按指定顺序输出所有列的方法
Apr 10 Python
python 不以科学计数法输出的方法
Jul 16 Python
在Python中过滤Windows文件名中的非法字符方法
Jun 10 Python
Python中typing模块与类型注解的使用方法
Aug 05 Python
基于python二叉树的构造和打印例子
Aug 09 Python
python并发编程多进程 互斥锁原理解析
Aug 20 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
提高define性能的php扩展hidef的安装和使用
2011/06/14 PHP
PHP中其实也可以用方法链
2011/11/10 PHP
Yii2中多表关联查询hasOne hasMany的方法
2017/02/15 PHP
js 鼠标拖动对象 可让任何div实现拖动效果
2009/11/09 Javascript
网页图片延时加载的js代码
2010/04/22 Javascript
5个最佳的Javascript日期处理类库分享
2012/04/15 Javascript
js 鼠标移动显示图片的简单实例
2013/12/25 Javascript
jQuery获取当前对象标签名称的方法
2014/02/07 Javascript
使用js实现关闭js弹出层的窗口
2014/02/10 Javascript
jquery+ajax实现跨域请求的方法
2015/01/20 Javascript
jQuery检测返回值的数据类型
2015/07/13 Javascript
window.setInterval()方法的定义和用法及offsetLeft与style.left的区别
2015/11/11 Javascript
js实现文字垂直滚动和鼠标悬停效果
2015/12/31 Javascript
jQuery实现简单的网页换肤效果示例
2016/09/18 Javascript
微信小程序 开发工具快捷键整理
2016/10/31 Javascript
详解vuelidate 对于vueJs2.0的验证解决方案
2017/03/09 Javascript
详解node如何让一个端口同时支持https与http
2017/07/04 Javascript
基于jQuery实现图片推拉门动画效果的两种方法
2017/08/26 jQuery
cocos creator Touch事件应用(触控选择多个子节点的实例)
2017/09/10 Javascript
父组件中vuex方法更新state子组件不能及时更新并渲染的完美解决方法
2018/04/25 Javascript
详解Vue源码中一些util函数
2019/04/24 Javascript
JavaScript箭头函数中的this详解
2019/06/19 Javascript
vue prop属性传值与传引用示例
2019/11/13 Javascript
微信小程序scroll-view点击项自动居中效果的实现
2020/03/25 Javascript
Array.filter中如何正确使用Async
2020/11/04 Javascript
python实现问号表达式(?)的方法
2013/11/27 Python
Python实现发送email的几种常用方法
2014/08/18 Python
Python实现统计给定字符串中重复模式最高子串功能示例
2018/05/16 Python
Python日期格式和字符串格式相互转换的方法
2020/02/18 Python
详解HTML5中的manifest缓存使用
2015/09/09 HTML / CSS
一些Solaris面试题
2013/03/22 面试题
小学教师学期末自我评价
2013/09/25 职场文书
成人毕业生自我鉴定
2013/10/18 职场文书
研究生毕业自我鉴定范文
2014/03/27 职场文书
2015年国庆节寄语
2015/08/17 职场文书
MySQL 十大常用字符串函数详解
2021/06/30 MySQL