gpt4 book ai didi

django - 解析来自标签 django 的字符串

转载 作者:行者123 更新时间:2023-12-01 15:02:20 25 4
gpt4 key购买 nike

我有一个自定义模板标签

{% perpage 10 20 30 40 50 %}

用户可以写自己的数字而不是这个 10,20 等。此外,这些数字的数量由用户定义。我如何解析这个标签并读取这个数字?我想使用“for”指令

更新:

@register.inclusion_tag('pagination/perpageselect.html')
def perpageselect (parser, token):
"""
Splits the arguments to the perpageselect tag and formats them correctly.
"""
split = token.split_contents()
choices = None
x = 1
for x in split:
choices = int(split[x])
return {'choices': choices}

所以,我有这个功能。我需要从模板标签中获取参数(数字),并将它们转换为整数。然后,我需要制作一个提交表单,以便将 GET 参数之类的选择传递给 URL (...&perpage=10)

最佳答案

从 Django 1.4 开始,您可以定义一个 simple tag采用位置或关键字参数。您可以在模板中循环遍历这些内容。

@register.simple_tag
def perpage(*args):
for x in args:
number = int(x)
# do something with x
...
return "output string"

当您在模板中使用 perpage 标签时,

{% perpage 10 20 30 %}

perpage 模板标记函数将使用位置参数 "10"、"20"、"30" 调用。这相当于在 View 中调用以下内容:

 per_page("10", "20", "30")

在我上面写的示例perpage 函数中,args("10", "20", "30")。您可以遍历 args,将字符串转换为整数,然后对数字做任何您想做的事情。最后,您的函数应返回您希望在模板中显示的输出字符串。

更新

对于包含标记,您不需要解析 token 。 inclusion 标签会为你做这些,并将它们作为位置参数提供。在下面的示例中,我已将数字转换为整数,您可以根据需要进行更改。我定义了一个 PerPageForm 并覆盖了 __init__ 方法来设置选项。

from django import forms
class PerPageForm(forms.Form):
perpage = forms.ChoiceField(choices=())

def __init__(self, choices, *args, **kwargs):
super(PerPageForm, self).__init__(*args, **kwargs)
self.fields['perpage'].choices = [(str(x), str(x)) for x in choices]

@register.inclusion_tag('pagination/perpageselect.html')
def perpage (*args):
"""
Splits the arguments to the perpageselect tag and formats them correctly.
"""
choices = [int(x) for x in args]
perpage_form = PerPageForm(choices=choices)
return {'perpage_form': perpage_form}

然后在您的模板中,使用 {{ perpage_form.perpage }} 显示表单域

关于django - 解析来自标签 django 的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11740475/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com