首页 > 其他分享 >关于django中如何让页面跳转时携带当前页面的参数

关于django中如何让页面跳转时携带当前页面的参数

时间:2023-08-11 15:23:20浏览次数:37  
标签:url 当前页 param django filter 参数 跳转 页面

需求分析:

image

处理逻辑步骤:

  • 在跳转到目标url时,先要获取当前页url所携带的参数
# 当前页url
http://127.0.0.1:9000/customer/list/?page=11

# 获取当前页url所携带的参数
request.GET.urlencode()   # paeg=11
  • 构造跳转页面的url
# 原本跳转页链接
http://127.0.0.1:9000/customer/edit/119/

# 构造之后跳转页的链接
http://127.0.0.1:9000/customer/edit/119/?paeg=11

# 这样,我们就可以在跳转页的视图函数内拿到当前页的参数了,然后在跳转页操作完毕之后,再将这个参数拼接到当前页url的后面,做到跳转之前和之后当前页参数一样

注意:这里有一个问题,如果当我们编辑页也有参数的时候,我们在编辑页的视图函数就不好方便哪个是当前页的参数了,这是一个问题,除非我们主动去记住当前页参数有哪些。
这样很不方便,而django给我们提供了一个解决办法,我们可以将当前页的参数整体当成一个参数,赋值给filter这样,就只需get拿filter这个参数的值就行了,但是有多个参数时=号和&号是需要转义一下的,不然我们还是不好将当前页所有参数当成一个整体!!!

# 拿到的当前页参数
param = request.GET.urlencode()

# 创建一个QueryDict,并把它修改成可修改状态
from django.http import QueryDict
new_query_dict = QueryDict(mutable=True)

# 往这个QueryDict对象里添加一个键值对,键就是自己定义的存放当前页所有参数的键名,值是对应当前页的参数
new_query_dict['_filter'] = param

# 把键的值进行转义一下得到转义之后的字符串
param_string = new_query_dict.urlencode() # _filter=page%3D10 转义之后的字符串

# 把param_string拼接到跳转url的后面
        tag = """
             <a href="{}?{}">
                            <button class="btn btn-sm btn-primary">编辑</button>
                        </a>
        """.format(url,param_string)

上述这样就实现了把当前页的参数携带到跳转url里面了

  • 然后在跳转页面点击保存之后,想要返回当前页,我们就可以把跳转页的参数拿出来,在拼接到原来当前页url的后面了
    # 在这里拿到当前request的get参数的filter值
    param = request.GET.get('_filter')
    # print(param) #page=9
    if not param:
        return redirect(reverse('customer_lis'))
    return redirect('/customer/list/?{}'.format(param))

# 上述代码可以封装到一个函数内,以后遇到相同功能只要,传入request和url即可!

标签:url,当前页,param,django,filter,参数,跳转,页面
From: https://www.cnblogs.com/suncolor/p/17537127.html

相关文章

  • django中如何开启事务&启动锁
    django开启事务#先导入模块fromdjango.dbimporttransaction#开启事务try: withtransaction.atomic(): 操作数据库的代码块 (出现异常会回滚)exceptExceptionase: 出现异常会执行下面的代码django开启锁......
  • Django 标签未注册解决办法 Invalid block tag on line 9: 'ifequal'. Did you forget
     这是一个常见问题,但不要担心!一旦您了解了导致模板标记错误的原因,无论是拼写错误、语法还是忘记加载库,就可以轻松修复它。Django中的标签是什么?Django中的标签为Django模板添加了特殊功能,允许您在模板中执行操作。例如,使用标签,您可以以特定格式显示数据、循环访问上下文......
  • 《爬虫》爬取页面图片并保存
    @目录前言代码效果简单的爬取图片前言这几天打算整理与迁移一下博客。因为CSDN的Markdown编辑器很好用,所以全部文章与相关图片都保存在CSDN。而且CSDN支持一键导出自己的文章为markdown文件。但导出的文件中图片的连接依旧是url连接。为了方便将图片保存到本地,......
  • Python基础day63Django操作session和中间件使用
    Django操作cookie#设置cookie#获取cookieset_cookie('key','value',max_age=5,expires=5)参数:●key,键●value=’’,值●max_age=None,超时时间cookie需要延续的时间(以秒为单位)如果参数是\None``,这个cookie会延续到浏览器关闭为止expires=None,超时时间(......
  • 汽车之家页面性能监控建设实践
    1前言关注用户体验,提高页面性能,是每位前端研发同学的日常工作之一。提高页面性能对业务的帮助,虽不易衡量,但肯定是利远大于弊。如何衡量页面性能优劣?如何帮助研发同学快速定位到页面性能瓶颈点?一直是前端的重点工作之一。本文分享汽车之家在页面性能监控建设方面的部分工作,主要包......
  • 什么是迭代器,生成器,装饰器;django的信号用过吗?如何用,干过什么;什么是深拷贝,什么是浅拷贝
    什么是迭代器,生成器,装饰器;django的信号用过吗?如何用,干过什么;什么是深拷贝,什么是浅拷贝,如何使用什么是迭代器,生成器,装饰器#迭代器-迭代:一种不依赖于索引取值的方式,我们不需要关注它的位置,只要能够一个个取值,它就称之为迭代,python中就是for循环,内部调用对象.__next__()-可迭......
  • - Django操作cookie - Django操作session - CBV添加装饰器 - 中间件 - csrf跨站请求
    Django操作cookie设置cookie:对象点set_cookie()获取cookie:request点COOKIE点getset_cookie('key','value',max_age=5,expires=5)参数:KEY:k值value:V值max_age=None,超时时间cookie需要延续的时间(以秒为单位)如果参数是\None``,这个cookie会延续到浏览器关闭为止expires=No......
  • Django操作cookie,Django操作session,Django中的Session配置,CBV添加装饰器,中间件,cs
    Django操作cookiecookie参数:●key,键●value=’’,值●max_age=None,超时时间cookie需要延续的时间(以秒为单位)如果参数是\None``,这个cookie会延续到浏览器关闭为止expires=None,超时时间(IErequiresexpires,sosetitifhasn’tbeenalready.)path=’/‘,Co......
  • PageOffice 在线编辑 office文件,回调父页面
    一、子页面调用父页面的方法varvalue=window.external.CallParentFunc("ParentFunName(Arguments);");//父页面的JS函数有返回值window.external.CallParentFunc("ParentFunName(Arguments);");//父页面的JS函数无返回值二、是否需要传递参数(子页面关闭窗口的同时刷新父页面......
  • vue+django跨域问题
    解决办法:MIDDLEWARE=['corsheaders.middleware.CorsMiddleware','yshop.middleware.AuthorizeMiddleware','django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware�......