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)
加上你在应用程序中的任何其他内容......
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)
没有您需要的内置功能。
这对于您自己来说是一个简单的标签 - Django 文档中有一些有用的示例。
我想你可以通过使用类似的东西来将一些东西组合在一起{% for x in "12345" %}Hello{% endfor %},但这是一个可怕的黑客。
| 归档时间: |
|
| 查看次数: |
2247 次 |
| 最近记录: |