Django - 保持请求之间的参数字典

时间:2014-08-23 00:01:37

标签: django

我需要根据一些参数显示一个表,比如每页寄存器或其他标准。如何使用Django模板轻松管理它?我知道GET请求的参数是查询字符串的形式。

我有两个区别按钮

<a href="{% url 'create_company' %}?regs=25">

<a href="{% url 'create_company' %}?status=active">

如何让它们表现得像

<a href="{% url 'create_company' %}<whatever was here before plus>status=active">

如果我单击第一个,接收页面并单击第二个,最终结果将是

<a href="{% url 'create_company' %}?regs=25&status=active">

同样如果我将regs的组合框从25更改为10,它知道必须删除regs = 25并添加regs = 10

1 个答案:

答案 0 :(得分:0)

我最终得到了一个自定义解决方案

# my_tags.py
@register.tag
def query_string(parser, token):
    """Converts a string into all lowercase"""
    tag_name, dic, key, value = token.split_contents()
    return QueryStringNode(dic, key, value)


class QueryStringNode(template.Node):
    def __init__(self, dic, key, value):
        self.dic = template.Variable(dic)
        self.key = key
        self.value = value

    def render(self, context):
        try:
            actual_dic = self.dic.resolve(context)
            actual_dic[self.key] = self.value
            return '?' + urllib.parse.urlencode(actual_dic)
        except VariableDoesNotExist: # allows no dic at all to blank links
            actual_dic = {self.key: self.value}
            return '?' + urllib.parse.urlencode(actual_dic)

并在模板上

<a href="{% url 'create_company' %}{% query_string params 'test' '1' %}">link</a>

不方便的是,在每个视图中,我都必须解析所有的查询字符串,将它们放回字典中,然后使用字典作为响应进行回复&#39; params&#39;