我需要根据一些参数显示一个表,比如每页寄存器或其他标准。如何使用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
答案 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;