本次要实现的功能是,访问未登录的视图函数,需要先跳转到登录页面,登陆成功在跳转回来。

之前在网上找了很多资料,都没有找到解决方案。

跳转到登录页面很好弄,就是登陆成功跳转回来出了问题,原因是登录后的post请求里拿不到之前url中next的值,所以只需要在发起get请求时,将next的值传递到模板的input标签里,type为hidden,之后再用post请求拿回来,就可以了!

只需要在url中拿到next的值,登陆成功后重定向到该值就可以实现了。

具体代码如下:

urls.py

urlpatterns = [
url(r'^01-temp/$',views.temp_views),
url(r'^form/$',views.fun,name='form'),
url(r'^loginv/',views.loginl,name="login"),
url(r'^createuser/$',views.create_user),
url(r'^auth/$',views.auth),
url(r'^logoutv/$',views.logoutl),
]
views.py

def loginl(request):
if request.method=="GET":
nexturl = request.GET.get("next", "")
print(request.user.is_authenticated)
if request.user.is_authenticated:
if nexturl:
# login(request,request.user)
return redirect(nexturl)
else:
return HttpResponse("登陆成功")
else:# 判断用户是否登录成功
return render(request,'login.html',{'nexturl':nexturl}) elif request.method == "POST":
nexturl=request.POST.get("nexturl","")
uname=request.POST.get("uname","")
upwd = request.POST.get("upwd", "")
print(uname, upwd,nexturl,request.get_full_path)
print(request.POST.get("next"))
user=authenticate(request,username=uname,password=upwd)
if user is not None:
if user.is_active:
# res = HttpResponse("sucess")
# res.set_cookie(key='uname',value=uname,max_age=)
# res.set_cookie(key='upwd', value=upwd,max_age=)
login(request,user)
if nexturl:#登陆成功后需要返回
print(uname, upwd, nexturl, request.get_full_path(), nexturl)
return redirect(nexturl)
else:#没有nexturl,返回主页即可 return HttpResponse("sucess")
else:
return HttpResponse("账户不存在") def logoutl(request):
logout(request)
return HttpResponse("成功退出") @login_required(login_url="/loginv/")
def temp_views(request): return HttpResponse("ok")
login.html

<form action="{% url 'login' %}" method="POST">
{% csrf_token %}
姓名<input type="text" name="uname">
<br>
密码<input type="password" name="upwd">
<br>
<input type="hidden" name="nexturl" value="{{ nexturl }}">
<input type="submit" value="提交">
</form>

登出

访问01-temp,需要登录

登陆成功,访问01-temp的视图函数

django @login_required登录限制(2)-返回登陆成功后的页面的更多相关文章

  1. shiro控制登陆成功后跳回之前的页面

    登陆之后跳回之前的页面是在做登陆注册模块时遇到的一个需求,也是很有必要的.若用户直接访问登陆页面,那可以控制它直接到首页,但是要用户没有登陆直接访问自己的购物车等需要经过身份认证的页面,或者因为ses ...

  2. mybaits返回插入成功后的自增值

    mybaits返回插入成功后的自增值 在项目中,我们经常遇到这样的情况:insert语句成功后,需要自增的id值,这个时候,我们可以通过mybatis的 useGeneratedKeys 来实现,具体 ...

  3. linux 本地账号密码无法登陆(shell可以登录),一直返回 登陆的login界面

    今天我在我虚拟机测试的时候遇到了一个问题.登陆centos一直是返回login,账号和密码没错,我也换了两个用户. 1.问题描述 我正常的输入用户名和密码 错误提示截图:返回登陆界面,我重新试了另外的 ...

  4. vue 做登陆页面 ( 登陆成功后去掉注册和登陆按钮 显示用户名)

    1.当登陆成功  显示用户名且去掉登陆和注册按钮 2.data里声明  后  就在登陆的方法里调用啦 下面说一下登陆的方法. 1.登陆的按钮代码在第一张图片里 2.登陆的弹出框 3.方法 ps:另一种 ...

  5. django @login_required登录限制

    参考文章:https://www.cnblogs.com/wodekaifalog/p/10817275.html 我们在网站开发过程中,经常会遇到这样的需求: 用户登陆系统才可以访问某些页面 如果用 ...

  6. 微信扫码登陆,qq登陆,微博登陆等第三方登陆成功后返回原来的页面并进行跳转

    原理很简单,主要是利用到window.open的第二个属性,name 前端: 原来的网页给window命名为 window.name="single" window.open(“第 ...

  7. MyBatis + MySQL返回插入成功后的主键id

    这是最近在实现perfect-ssm中的一个功能时碰到的一个小问题,觉得需要记录一下,向MySQL数据库中插入一条记录后,需要获取此条记录的id值,以生成对应的key值存入到redis中,id为自增i ...

  8. 使用SpringMVC的crud操作时,进行数据修改,但是修改成功后,页面无法显示lastName属性值(被修改的那条记录)

    我这个错误的原因在于,把map的键写错了,它必须和类名第一个字母小写相同 @ModelAttribute public void getEmployee(@RequestParam(value=&qu ...

  9. java 项目 导入成功后jsp页面报错处理方法

    本人新导入一个maven项目可是jsp页面一直报错,我先按照网上的经验操作如下步骤: 在pom.xml配置文件中添加上javax.servlet的相关依赖: <dependency>  & ...

随机推荐

  1. c# 多线程解决死锁问题

    可使用:Monitor.TryEnter()方法.虽然这种方法可以解决死锁问题,但是最好还是不要出现死锁这种情况.如果出现死锁这种情况,就说明代码有问题啊.还是在else里面加个日志记录下吧,然后再解 ...

  2. SWIG 3 中文手册——5. SWIG 基础知识

    目录 5 SWIG 基础知识 5.1 运行 SWIG 5.1.1 输入格式 5.1.2 SWIG 输出 5.1.3 注释 5.1.4 C 预处理器 5.1.5 SWIG 指令 5.1.6 解析限制 5 ...

  3. 系统内置委托Action和func

    Action委托, action是系统内置的委托,它可指向无返回值,没有参数的方法. using System; using System.Collections.Generic; using Sys ...

  4. PHP服务端优化全面总结

    一.优化PHP原则 1.1PHP代码的优化 (1)升级最新的PHP版本 鸟哥PPT里的对比数据,就是WordPress在PHP5.6执行100次会产生70亿次的CPU指令执行数目,而在PHP7中只需要 ...

  5. Caused by: java.lang.ClassCastException: org.springframework.web.SpringServletContainerInitializer cannot be cast to javax.servlet.ServletContainerInitializer。。。。。检查一下servlet-api是否冲突了?

    原因:jar包发生冲突.在我的pom.xml文件中 <dependency>      <groupId>javax.servlet</groupId>       ...

  6. torch.max

    torch.max() torch.max(input) -> Tensor Explation: ​ Returns the maximum value of all elements in ...

  7. python2.7写的图形密码生成器

    #coding:utf8import random,wxdef password(event): a = [chr(i) for i in range(97,123)] b = [chr(i) for ...

  8. DjangoDRF总结

    思维导图xmind文件:https://files-cdn.cnblogs.com/files/benjieming/DRF%E6%A8%A1%E5%9D%97.zip

  9. 【转载】C#使用typeof运算符获取对象变量的具体类型Type

    在C#的实际类型操作过程中,有时候需要通过typeof方法获取对象的类型对应的Type变量即具体类型,例如在获取DataTable中某一列的具体数据类型的时候,我们就会用到typeof方法来获取具体的 ...

  10. iOS7的十个更“佳”:简洁直观更受青睐

    转自:http://www.25pp.com/news/news_27792.html iOS7自发布以来一直是褒贬不一,虽然苹果还只是发布了第二个测试版,但普通用户早已经在纠结到底该不该升级iOS7 ...