from functools import wraps

def check_login(func):
@wraps(func)
def inner(request, *args, **kwargs):
next_url = request.get_full_path()
if request.session.get("user"):
return func(request, *args, **Kwargs)
else:
return redirect("/login/?next={}".format(next_url))
return inner def login(request):
if request.method == "POST":
username = request.POST.get("username")
password = request.POST.get("password") if username == "yang" and password = "123":
# 设置session
request.session["user"] = user
#获取跳到登录页面之前的URL
next_url = request.GET.get("next")
# 如果有,就跳转到登录之前的URL
if next_url:
return redirect(next_url)
# 否则默认跳转到index页面
else:
return redirect("/index/")
return render(request, "login.html") @check_login
def logout(request):
# 删除所有当前请求相关的session
request.session.delete()
return redirect("/login/") @check_login
def index(request):
current_user = request.session.get("user", None)
return render(request, "index.html", {"user": currrent_user})

  

最新文章

  1. 烂泥:更换ESXI5.0管理网卡及管理IP地址
  2. HDNOIP201404最短路径
  3. CF---(452)A. Eevee
  4. C# 调用Dll 传递字符串指针参(转)
  5. iOS中ARC内部原理
  6. Centos虚拟机安装分区分配
  7. SEO-外部链接类型以及标准
  8. css百分比参照大总结
  9. Vuex state 状态浅解
  10. BeautifulSoup 抓取网站url
  11. Qt Create or VS 2015 使用 Opencv330 相机静态库链接错误如何解决?
  12. win7上Android环境搭建以及调试
  13. emWin仪表界面设计,含uCOS-III和FreeRTOS两个版本
  14. 让老板虎躯一震的前端技术,KPI杀手
  15. Asible第三章:roles--小白博客
  16. Hyperledger Fabric 架构梳理
  17. (21)jq动画
  18. Leetcode 树 Populating Next Right Pointers in Each Node II
  19. Yii 的session 实现返回上上页面
  20. Mindoc搭建流程

热门文章

  1. 【转】STM32的FSMC详解
  2. 计算机概论 64bit和32bit的CPU的不同
  3. springboot+mybatis调用oracle存储过程
  4. SpringBoot项目的限流
  5. JS-实现横向手风琴
  6. vue组件常用传值
  7. SpringBoot--多环境部署配置文件
  8. python 利用pyttsx3文字转语音(转)
  9. 少勇 #import和@class的区别
  10. RobHess的SIFT代码解析之RANSAC