django @login_required登录限制(2)-返回登陆成功后的页面
本次要实现的功能是,访问未登录的视图函数,需要先跳转到登录页面,登陆成功在跳转回来。
之前在网上找了很多资料,都没有找到解决方案。
跳转到登录页面很好弄,就是登陆成功跳转回来出了问题,原因是登录后的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)-返回登陆成功后的页面的更多相关文章
- shiro控制登陆成功后跳回之前的页面
登陆之后跳回之前的页面是在做登陆注册模块时遇到的一个需求,也是很有必要的.若用户直接访问登陆页面,那可以控制它直接到首页,但是要用户没有登陆直接访问自己的购物车等需要经过身份认证的页面,或者因为ses ...
- mybaits返回插入成功后的自增值
mybaits返回插入成功后的自增值 在项目中,我们经常遇到这样的情况:insert语句成功后,需要自增的id值,这个时候,我们可以通过mybatis的 useGeneratedKeys 来实现,具体 ...
- linux 本地账号密码无法登陆(shell可以登录),一直返回 登陆的login界面
今天我在我虚拟机测试的时候遇到了一个问题.登陆centos一直是返回login,账号和密码没错,我也换了两个用户. 1.问题描述 我正常的输入用户名和密码 错误提示截图:返回登陆界面,我重新试了另外的 ...
- vue 做登陆页面 ( 登陆成功后去掉注册和登陆按钮 显示用户名)
1.当登陆成功 显示用户名且去掉登陆和注册按钮 2.data里声明 后 就在登陆的方法里调用啦 下面说一下登陆的方法. 1.登陆的按钮代码在第一张图片里 2.登陆的弹出框 3.方法 ps:另一种 ...
- django @login_required登录限制
参考文章:https://www.cnblogs.com/wodekaifalog/p/10817275.html 我们在网站开发过程中,经常会遇到这样的需求: 用户登陆系统才可以访问某些页面 如果用 ...
- 微信扫码登陆,qq登陆,微博登陆等第三方登陆成功后返回原来的页面并进行跳转
原理很简单,主要是利用到window.open的第二个属性,name 前端: 原来的网页给window命名为 window.name="single" window.open(“第 ...
- MyBatis + MySQL返回插入成功后的主键id
这是最近在实现perfect-ssm中的一个功能时碰到的一个小问题,觉得需要记录一下,向MySQL数据库中插入一条记录后,需要获取此条记录的id值,以生成对应的key值存入到redis中,id为自增i ...
- 使用SpringMVC的crud操作时,进行数据修改,但是修改成功后,页面无法显示lastName属性值(被修改的那条记录)
我这个错误的原因在于,把map的键写错了,它必须和类名第一个字母小写相同 @ModelAttribute public void getEmployee(@RequestParam(value=&qu ...
- java 项目 导入成功后jsp页面报错处理方法
本人新导入一个maven项目可是jsp页面一直报错,我先按照网上的经验操作如下步骤: 在pom.xml配置文件中添加上javax.servlet的相关依赖: <dependency> & ...
随机推荐
- Ansible15:文件管理模块及Jinja2过滤器
目录 常用文件管理模块 1. file 2. synchronize 3. copy 4. fetch 5. lineinfile 6. stat 7. blockinfile Jinja2模板管理 ...
- Mono 下的 ASP.NET 可以运行在哪些 Web 服务器上?
Mono has an implementation of ASP.NET 2.0, ASP.NET MVC and ASP.NET AJAX. Quick Resources: ASP.NET FA ...
- 【POI】java服务生成List数据集合,后台服务生成xlsx临时文件,并将临时文件上传到腾讯云上
场景: java服务生成List数据集合,后台服务生成xlsx临时文件,并将临时文件上传到腾讯云上 今日份代码: 1.先是一个变量,作为文件名 private static final String ...
- 2019-11-29-VisualStudio-断点调试详解
原文:2019-11-29-VisualStudio-断点调试详解 title author date CreateTime categories VisualStudio 断点调试详解 lindex ...
- winform加快窗体加载速度
//加快控件加载的速度 protected override CreateParams CreateParams { get { CreateParams cp = base.CreateParams ...
- Asp.NetCoreWebApi - RESTful Api
目录 参考文章 REST 常用http动词 WebApi 在 Asp.NetCore 中的实现 创建WebApi项目. 集成Entity Framework Core操作Mysql 安装相关的包(为X ...
- Python【day 9】函数入门1
1.什么是函数 函数的概念:对功能或者动作的封装 函数的好处:避免重复代码 2.函数的定义 1.函数的定义 def 函数名(形参列表): 函数体(return) 2.函数的调用 函数名(实参列表) 3 ...
- cin快读
ios::sync_with_stdio(false); \\取消同步,cin,cout的速度就不慢了!!
- React学习笔记③
生命周期的理解 class App extends Component{ constructor(){ console.log("constructor") //初始化属于组件的属 ...
- android studio学习----通过github的URL怎么导入新的工程
这一切的前提是你装了git,有了github帐号,之后就很简单,但是导入之后交给android studio 也会发生各种编译错误,这个时候就需要自己去一一解决了,主要还是 引用依赖版本的问题 第一 ...