zoukankan      html  css  js  c++  java
  • 【Django】登录后回到之前的页面

    在任意页面点击登录,登录成功后,跳转到之前点击登录的那个页面

    1. 用户在A.html页面点击登录
    2. 用户到登录页面login.html
    3. 用户输入信息登录成功
    4. 自动跳转回到A.html
    

    1. 所有的登录链接路径:{% url 'login' %}?next={{ request.path }}

      <a href="{% url 'login' %}?next={{ request.path }}">登录</a>
      <!-- request.path: 当前页面的url -->
      

      GET路径为:.../login/?next=当前url/

    2. login视图函数获取next的值:next=request.GET.get('next','/')
      在返回的login页面的登录表单中添加:<input type="hidden" name="next" value="{{ next }}">

    3. 将登录表单的值包括$('input[name="next"]')的值提交到视图函数,视图函数获取next值进行下一步跳转。


    /views.py

    def login(request):
    	if request.method == "POST":
    		ret = {
    			'status': None,
    			'msg': '',
    		}
    
    		username = request.POST.get("username")
    		password = request.POST.get("password")
    		next = request.POST.get('next')
    
    		if geetest_auth.geetest_auth(request):
    			user = auth.authenticate(username=username, password=password)
    			if user:
    				auth.login(request, user)
    				ret["msg"] = next
    			else:
    				ret["status"] = 1
    				ret["msg"] = "用户名或密码错误!"
    
    		return JsonResponse(ret)
    
    	elif request.method == "GET":
    		next = request.GET.get('next', '/')
    		return render(request, "login.html", {'next': next})
    
    
  • 相关阅读:
    MySQL SQL语言学习
    02-MySQL执行计划详解(EXPLAIN)
    linux下删除oracle11g单实例的方法
    01. Oracle 实例恢复
    替代变量与SQL*Plus环境设置
    9. Oracle 归档日志
    8. Oracle 联机重做日志文件(ONLINE LOG FILE)
    7. Oracle 控制文件(CONTROLFILE)
    6. Oracle 回滚(ROLLBACK)和撤销(UNDO)
    5. Oracle 表空间与数据文件
  • 原文地址:https://www.cnblogs.com/q1ang/p/10060822.html
Copyright © 2011-2022 走看看