博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Multiple arguments in Django template filters
阅读量:6284 次
发布时间:2019-06-22

本文共 1207 字,大约阅读时间需要 4 分钟。

Multiple arguments in Django template filters

Author: nme · Tuesday, 5 July, 2011 · ·

 

By default, it is not currently possible to pass multiple arguments to Django template filter — states: "Custom filters are just Python functions that take one or two arguments".

Here I describe solution that allows passing more arguments.

Lets say we have key and current query_string in our template context. We loop in paginator and alter query_string current key value with page. The key is to group arguments in an array. We use following custom filter:

@register.filterdef keys (first,second):    if isinstance(first,list):        return first+[second]    else:        return [first,second]

following filter allows us to:

{
{
"1"|keys:"2"|keys:"3" }}

which will return in our template:

[u'1', u'2', u'3']

Returning to described query_string altering problem — we use alter_query filter:

@register.filterdef alter_query (keys, query_string):    from django.http import QueryDict    query_dict = QueryDict(query_string, mutable=True)    query_dict[keys[0]] = keys[1]    return query_dict.urlencode()

inside pagination template, we use following code:

{
{ page }}

Doesn't look pretty, but works perfectly.

转载地址:http://wngpa.baihongyu.com/

你可能感兴趣的文章
Cause: org.apache.ibatis.ognl.ExpressionSyntaxException: Malformed OGNL expression:......
查看>>
路由模式 - direct
查看>>
form表单的target属性
查看>>
mysql的常用引擎
查看>>
Linux基础(day40)
查看>>
第二个Java应用和Tomcat的管理功能
查看>>
10.28 rsync工具介绍 10.29/10.30 rsync常用选项 10.31 rsync通过ssh同步
查看>>
使用Layer弹窗时遇到Layer.Close()后dom元素延迟性销毁的问题 @Gyb
查看>>
LVS DR +keepalived配置
查看>>
安装redis.msi 及启动命令
查看>>
k8s集群部署四(部署Flannel网络)
查看>>
C4C和Outlook的集成
查看>>
人脸检测,人脸识别,机器学习库Dlib在VS2015上的详细安装教程,示例运行
查看>>
数组——冒泡排序算法
查看>>
微信H5支付坑一--手续费未结算
查看>>
Spring Cloud Alibaba发布第二个版本,Spring 发来贺电
查看>>
Netty 备录 (一)
查看>>
netfilter 五个表五个链介绍,iptables案例
查看>>
Ubuntu服务器界面认识及创建用户
查看>>
网站如何防止sql注入攻击
查看>>