django url编码

url编码

  • 需要在url中加入特定字符做地址标记
  • 使用request.get_full_path()获取地址
  • request.GET返回一个不可修改的QueryDict类型,里面记录路径中的k-v对应
  • 将QueryDict类型变成可修改的类型,并且保证类型等都不变,修改mutable属性
  • 将标记字符添加到QueryDict里面
  • 使用urlencode()方法将地址编码,他将url里面的不安全字符如=、&换成16进制的ascii码,这样就能够使参数部分为一个整体
  • 最后将完整地址拼接起来
from django.http.request import QueryDict
from django.urls import reverse
from django import template
register = template.Library()


@register.simple_tag
def resole_url(request,url_name,customer_pk):
    # 编辑保存之后跳转回的路径
    next_url = request.get_full_path()   # /customers/?page=3
    reverse_url = reverse(url_name,args=(customer_pk,))   # /edit_customer/1/
    
    q = QueryDict(mutable=True)
    q['next'] = next_url    # queryDict({'next':'/customers/?page=3&kw=111'})
    
    next_url = q.urlencode()    # next=/customers/%3Fpage%3D%26kw%3D111

    
    full_url = reverse_url + '?' + next_url
    print(full_url)

    return full_url

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值