Django 实现页面跳转并传递参数
一、跳转
据我试验,django后台不会自动跳转页面,需要前端自动跳转,它只做渲染
1、ajax请求成功后,replace页面
class="table table-bordered">
$.ajax({ url: "/ctest/env_add/", type: "post", data: { "env_id": env_id, "env_name": env_name, }, success: function () { alert("保存成功"); window.location.replace("/ctest/env/?flag=true"); //可以带点参数 }, error: function () { alert("error!错了错了"); } });2、直接href参数跳转
二、传参 1、window.location.replace()传参"/ctest/env_update/?env_id={{env.env_id}}" class="layui-btn layui-btn-xs" lay-event="edit" onclick="edit_env(this)">编辑 "javascript:void(0);" class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del" onclick="del_env(this)">删除
window.location.replace("/ctest/env/?flag=true");
在区分跳转前的页面时可以这样传参
页面获取该参数较麻烦,下面是获取传参的方法,返回的是一个对象
function GetRequest() { var url = location.search; //获取url中"?"符后的字串 var theRequest = new Object(); if (url.indexOf("?") != -1) { var str = url.substr(1); strs = str.split("&"); for(var i = 0; i < strs.length; i ++) { theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]); } } return theRequest;取值
}
function fill() { var flag = GetRequest(); console.log(flag) if (flag.flag){ pass } }2、直接href传参
"/ctest/env_update/?env_id={{env.env_id}}" class="layui-btn layui-btn-xs" lay-event="edit" onclick="edit_env(this)">编辑这里相当于一个get请求,可以后台get方法取值,如下
def env_update(request): if request.method == 'GET': env_id = request.GET.get('env_id') env_list = Env.objects.get(env_id=env_id) print(env_list.username) return render(request,'ctest/env/update_new.html',{'env_list':env_list})目测这里也可以按照replace的方法取值,参考第一点 3、storage存取值 storage有两种,sessionStorage 和 localStorage,大致的区别是,sessionStorage 的缓存只存在会话中,关闭网页就没有了,localStorage会长久保存在浏览器的缓存中,除非手动清理浏览器缓存。 目前使用的没有需要长期保存的,我都用的sessionStorage 存值
var storage = window.sessionStorage; var if_pb = moa_pb; var request_body_param = moa_req; storage.setItem("if_pb",if_pb); storage.setItem("request_body_param",request_body_param);取值
function fill() { var flag = GetRequest(); var storage = window.sessionStorage; var if_pb = storage.if_pb; var request_body_data = storage.request_body_param; console.log(flag) if (flag.flag){ $("#if_pb").attr("value",if_pb); $("#request_body_data").val(request_body_data); } } window.onload=fill; //初始化页面会加载这个函数4、view.py 函数中渲染页面时返回参数
if request.method == 'GET': env_list = Env.objects.all() return render(request, 'ctest/env/index_new.html', {"env_list": env_list})上面的env_list是数据库返回的一个对象,返回后前端取值
| ID | 测试环境 | 环境ip | 默认执行账号 | 默认账号密码 | 描述 | 操作 |
|---|---|---|---|---|---|---|
| {{ env.env_id }} | {{ env.env_name }} | {{ env.hostname }} | {{ env.defaultUser }} | {{ env.defaultPwd }} | {{ env.description }} | "/ctest/env_update/?env_id={{env.env_id}}" class="layui-btn layui-btn-xs" lay-event="edit" onclick="edit_env(this)">编辑 "javascript:void(0);" class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del" onclick="del_env(this)">删除 |