介绍
django自带反向解析生成URL的功能,目的是避免硬编码,较少代码维护的代价。
前端页面使用模板语法,如:{% url "rbac: request menu_list" %}
后台视图函数使用django组件函数:reverse()
但是,当需要在页面跳转时携带浏览器搜索框中的GET请求的参数时(如,'?page=1'),上述方法就难以满足需求,需要自定制反向生成路由的方法。
这里可以考虑使用django的simple_tag并利用组件QueryDict
前端页面反向生成url
前端页面扩展原模板语法的反向解析功能
利用simple_tag前端页面对反向解析url做出来
使用QueryDict打包当前URL中的参数,会自动转译
@register.filter
def memory_url(request, name, *args, **kwargs):
"""
生成带有原搜索条件的url
:param request:
:param name: 带namespace的url别名
:return:
"""
original_url = reverse(name, args=args, kwargs=kwargs)
# 当前url中无搜索条件
if not request.GET:
return original_url
query_dict = QueryDict(mutable=True)
query_dic