在任意页面点击登录,登录成功后,跳转到之前点击登录的那个页面
1. 用户在A.html页面点击登录
2. 用户到登录页面login.html
3. 用户输入信息登录成功
4. 自动跳转回到A.html
-
所有的登录链接路径:
{% url 'login' %}?next={{ request.path }}
<a href="{% url 'login' %}?next={{ request.path }}">登录</a> <!-- request.path: 当前页面的url -->
GET路径为:
.../login/?next=当前url/
-
login视图函数获取next的值:
next=request.GET.get('next','/')
在返回的login页面的登录表单中添加:<input type="hidden" name="next" value="{{ next }}">
-
将登录表单的值包括
$('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})