django跳转页面传参的实现
一、情景
eg:查看一条数据的详情,需要跳转页面,并进行传值
二、思路
方式1:触发详情按钮时,Js获取到该条数据的id值,并传递给url,后台接受到该请求,通过id查询到这条数据。并返回一个json串给前端。前端拿到数据进行处理,映射给页面。
方式2:触发详情按钮时,同时前端进行本地保存当前数据(sessionstorage\localstorage),跳转页面后,前端直接从storage当前取值并回显。
①关于数据存储:
sessionstorage:数据存储,关闭窗口的同时,清除数据
localstorage:数据存储,未定义过期时间,一直存在本地
需要注意的是:当前端页面发生跳转时,资源都会被重载,当未进行传值的情况下,无法跨页面加载数据。
三实现:
方式1:URL传值
①获取id后直接传递给URL
window.location.href=`index.html?nid=${id}`;
②再跳转到index.html的js中获取到该并id解析
(function(){
window.onload=function(){
varurl=window.location.href;
varurl_param=url.split("?")[1];
varurl_param_arr=url_param.split("=");
varnid={nid:url_param_arr[1]};
preview_index(nid);//处理函数,发送请求
}
})();
方式2:本地存储
①存
//本地存储
varstorage=window.sessionStorage;
storage['index_name']=$('#index_name').val();
storage['index_title']=$('#index_title').val();
storage['index_content']=$('#index_content').val();
②读取
varstorage=window.sessionStorage; title=storage.index_title
四、其他方法
1、如果在反转url的时候,需要添加参数,那么可以通过传递'kwargs'参数到'reverse'函数中。实例代码:
urls.py
fromdjango.urlsimportpath,re_path
fromapp01importviews
urlpatterns=[
path('article///',views.article,name='article'),
path('',views.Login.as_view(),name="login"),
]
views.py
fromdjango.shortcutsimportHttpResponse,redirect,reverse
fromdjango.contrib.auth.modelsimportUser,
fromdjango.views.genericimportView
fromdjango.contrib.authimportauthenticate,login,
classLogin(View):
defget(self,request):
returnrender(request,'login.html')
defpost(self,request):
username=request.POST.get('username')
passwd=request.POST.get('passwd')
user=authenticate(request,username=username,password=passwd)
ifuserisnotNone:
ifuser.is_active:
login(request,user)
#登录成功跳转页面
returnredirect(reverse('article',kwargs={'year':2019,'month':12}))
else:
err_msg='用户未激活,请联系管理员进行激活'
else:
err_msg='用户名或密码有误'
returnrender(request,'login.html',{"err_msg":err_msg,"username":username})
defarticle(request,year,month):
returnHttpResponse('您查询的文章日期是:%s年%s月'%(year,month))
2、如果想要添加查询字符串的参数,则必须手动的进行拼接。实例代码如下:
login_url=reverse('login')+"?next=/"
到此这篇关于django跳转页面传参的实现的文章就介绍到这了,更多相关django跳转页面传参内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。