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)