django跳转页面传参的实现

作者:xsan 时间:2022-01-23 00:56:55 

一、情景

    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() {
   var url=window.location.href;
   var url_param = url.split("?")[1];
   var url_param_arr = url_param.split("=");
   var nid ={nid:url_param_arr[1]};
   preview_index(nid);//处理函数,发送请求
}
})();

方式2:本地存储

①存


//本地存储
       var storage = window.sessionStorage;
       storage['index_name'] = $('#index_name').val();
       storage['index_title'] = $('#index_title').val();
       storage['index_content'] = $('#index_content').val();

②读取


var storage=window.sessionStorage;
title=storage.index_title

四、其他方法

1、如果在反转url的时候,需要添加参数,那么可以通过传递'kwargs'参数到'reverse'函数中。实例代码:

urls.py


from django.urls import path, re_path
from app01 import views

urlpatterns = [
 path('article/<year>/<month>/',views.article,name='article'),
 path('', views.Login.as_view(), name="login"),
 ]

views.py


from django.shortcuts import HttpResponse, redirect, reverse
from django.contrib.auth.models import User,
from django.views.generic import View
from django.contrib.auth import authenticate, login,

class Login(View):
 def get(self, request):
   return render(request, 'login.html')

def post(self, request):
   username = request.POST.get('username')
   passwd = request.POST.get('passwd')
   user = authenticate(request, username=username, password=passwd)
   if user is not None:
     if user.is_active:
       login(request, user)
       # 登录成功跳转页面
       return redirect(reverse('article', kwargs={'year': 2019, 'month': 12}))
     else:
       err_msg = '用户未激活,请联系管理员进行激活'
   else:
     err_msg = '用户名或密码有误'
   return render(request, 'login.html', {"err_msg": err_msg, "username": username})

def article(request, year, month):
 return HttpResponse('您查询的文章日期是:%s年%s月' %(year, month))

2、如果想要添加查询字符串的参数,则必须手动的进行拼接。实例代码如下:


login_url = reverse('login')+"?next=/"

来源:https://www.cnblogs.com/xshan/p/12080703.html

标签:django,跳转,页面传参
0
投稿

猜你喜欢

  • 更新pip3与pyttsx3文字语音转换的实现方法

    2021-04-29 13:55:36
  • javascript实现Table排序的方法

    2024-04-19 10:16:19
  • 基于opencv对高空拍摄视频消抖处理方法

    2021-09-29 22:25:41
  • 常用SQL语句查询分享

    2024-01-12 16:13:11
  • 浅谈vue异步数据影响页面渲染

    2024-04-30 10:45:19
  • python自动安装pip

    2021-04-06 09:30:00
  • 浅谈视觉设计的准确性

    2007-09-18 17:59:00
  • 在ASP.NET 2.0中操作数据之四十六:使用SqlDataSource控件检索数据

    2023-07-04 14:31:37
  • Tensorflow与RNN、双向LSTM等的踩坑记录及解决

    2021-04-29 21:25:55
  • 获取python的list中含有重复值的index方法

    2022-03-06 20:54:02
  • MySQL分类排名和分组TOP N实例详解

    2024-01-24 11:23:16
  • python使用正则表达式来获取文件名的前缀方法

    2023-02-08 07:37:58
  • npm全局环境变量配置详解

    2024-05-03 15:54:58
  • python等待10秒执行下一命令的方法

    2022-02-25 00:40:03
  • 使用 TRUNCATE TABLE 删除所有行

    2008-04-24 19:20:00
  • 22个HTML5的初级技巧

    2010-12-17 12:39:00
  • 利用python判断字母大小写的几种方法小结

    2022-05-10 16:41:49
  • pytorch 实现计算 kl散度 F.kl_div()

    2023-04-03 20:16:18
  • ASP Access实现网站计数器(访问量)

    2011-04-10 10:33:00
  • 详解Docker创建Mysql容器并通过命令行连接到容器

    2024-01-24 22:25:18
  • asp之家 网络编程 m.aspxhome.com