django之自定义标签(路径url反向解码)
django之自定义标签
自定义标签创建
- 在应用文件夹下创建templatetags文件夹
- 在文件夹下创建py脚本,如mytags.py
- 在mytags.py写入自定义标签的处理代码
#自定义标签传参后,携带原路径参数或跳转路径的获取数据参数 #自定义标签 from django import template from django.urls import reverse
register = template.Library()
@register.simple_tag
def resolve_url(request,url_name,cid):
""":param request: 请求对象 :param url_name: url别名 :param cid: 客户id :return: """ from django.http.request import QueryDict custom_query_dict = QueryDict(mutable=True) custom_query_dict['next'] = request.get_full_path() #要跳转回的url next_url = custom_query_dict.urlencode() #将得到的搜索路径url编码 reverse_url = reverse(url_name,args=(cid,)) #编辑的url ?next=要跳转的url full_path = reverse_url + '?' + next_url return full_path
在前端页面中,数据传参
<a href="{{ resolve_url request "case_edit" foo.id }}"></a>
后端view视图
from django.shortcuts import render,redirect,HttpResponse,
next_url = request.GET.get("next")
return redirect(next_url)