是否有一个django模板相当于python字符串乘法函数?

Kry*_*ski 7 python django django-templates django-template-filters

在python我可以写"Hello" * 5和得到

HelloHelloHelloHelloHello
Run Code Online (Sandbox Code Playgroud)

有没有办法在django模板中执行此操作?像{% multiply "Hello" 5 %}过滤器一样的东西{% "Hello"|multiply:"5" %}

或者可能是"重复"循环控制?就像是:

{% repeat 5 %}
Hello
{% endrepeat %}
Run Code Online (Sandbox Code Playgroud)

我自己可以写一个过滤器或标签,但想知道我是否可以省去一些麻烦.

如果某人可以权威地说没有我所要求的内置功能,那将是一个完全可以接受的答案.

Jia*_*aro 18

这是另一个黑客:

{% for x in ""|ljust:"100" %}
    Hello World!
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

我在这里使用空字符串作为值,我重复100x.您还可以使用变量来确定此hack的重复次数:)只需将"100"替换为变量即可.

{% for x in ""|ljust:repeat_count %}
    Hello World!
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

或者自己动手......

您可以非常轻松地制作乘法滤镜(更多关于制作自己的模板标签和滤镜):

在已安装的应用程序中(例如,包含在INSTALLED_APPS设置中),添加"templatetags"模块和名为"string_multiply.py"的文件

所以你会有这样的事情:

your_app
  + templatetags
  | + __init__.py
  | + string_multiply.py 
  + __init__.py
  + models.py
Run Code Online (Sandbox Code Playgroud)

加上你在应用程序中的任何其他内容......

这是你的string_multiply.py

from django.template import Library

register = Library()

@register.filter
def multiply(string, times):
    return string * times
Run Code Online (Sandbox Code Playgroud)

是的,这就是整个事情......

然后在你的模板中

{% load string_multiply %}

Chris Brown:
{% filter multiply:3 %}
  Yeah!
{% endfilter %}

You (x5):
{{ request.user.username|multiply:5 }}
Run Code Online (Sandbox Code Playgroud)

其输出将是:

Chris Brown:
  Yeah!
  Yeah! 
  Yeah!

You (x5):
Koliber ServicesKoliber ServicesKoliber ServicesKoliber ServicesKoliber Services
Run Code Online (Sandbox Code Playgroud)


Dan*_*een 4

没有您需要的内置功能。

这对于您自己来说是一个简单的标签 - Django 文档中有一些有用的示例。

我想你可以通过使用类似的东西来将一些东西组合在一起{% for x in "12345" %}Hello{% endfor %},但这是一个可怕的黑客。