django跳转页面传参的实现
作者:xsan 发布时间:2022-01-23 00:56:55
标签: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() {
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
0
投稿
猜你喜欢
- 1.having 子句的用法 having 子句对 group by 子句所确定的行组进行控制,having 子句条件中只允许涉及常量,聚组
- 最近Google官方的开发者博客中宣布新的版本Tensorflow(0.12)将增加对Windows的支持,想试着windows10下学习t
- 写此篇文章,我花10块购买了域名ssw.ski。目的是编写python脚本,通过dnspod api获取个人域名内的dns解析记录,免登录实
- 对于一个多元函数 用牛顿法求其极小值的迭代格式为其中 为函数 的梯度向量, 为函数 的Hesse(Hessian)矩阵。上述牛顿法
- 最近因项目需要用ACCESS做数据库开发WEB项目看论坛上还许多人问及ACCESS被注入的安全问题许多人解决的方法仍然是用Replace替换
- 前言daemon 音标 : [‘di:mən] , 中文含义为守护神或精灵的意思 . 其实它还有个意思 : 守护进程 .Daemon程序是一
- 本文实例讲述了js实现的全国省市二级联动下拉选择菜单。分享给大家供大家参考。具体如下:运行效果截图如下:具体代码如下:<!DOCTYP
- MybatisPlus 是一款在 Mybatis 基础上进行的增强 orm 框架,可以实现不写 sql 就完成数据库相关的操作。普通的 ma
- 官方实现golang 1.8 及以上版本提供了一个创建共享库(shared object)的新工具,称为 Plugins。目前 Plugin
- 想买mate40,但总是抢不到,所以想试着能不能写个脚本代码。第一步:把想要抢购的商品加进购物车,注意:脚本是对购物车内全部商品进行下单操作
- 推荐第四种方案1通过MyBatis配置文件创建读写分离两个DataSource,每个SqlSessionFactoryBean对象的mapp
- 在这个周末刚刚写出来的python桌面应用--网络聊天室,主要通过pyqt5作为桌面应用框架,socket作为网络编程的框架,从而实现包括客
- MySQL BETWEEN 用法MySQL BETWEEN 语法BETWEEN 运算符用于 WHERE 表达式中,选取介于两个值之间的数据范
- 【原文地址】 Tip/Trick: Supporting Full Screen Mode with Silverlight 【原文发表日期
- 接着上篇的内容,在上篇给大家介绍了Bootstrap学习系列之使用 Bootstrap Typeahead 组件实现百度下拉效果Bootst
- MYSQL中批量替换某个字段的部分数据,具体介绍如下所示:1.修改字段里的所有含有指定字符串的文字UPDATE 表A SET 字段B = r
- 本文实例讲述了Python装饰器原理与基本用法。分享给大家供大家参考,具体如下:装饰器:意义:在不能改变原函数的源代码,和在不改变整个项目中
- 第一步 : 从清华大学开源软件镜像站下载Anaconda:https://mirrors.tuna.tsinghua.edu.cn/anac
- Python是一种非常富有表现力的语言。它为我们提供了一个庞大的标准库和许多内置模块,帮助我们快速完成工作。然而,许多人可能会迷失在它提供的
- 前言在安装完python及pip,setuptools等工具后,即可以创建virualenv虚拟环境了,这个类似于虚拟机的工具,可以让同一台