Ahs*_*san 184 django django-templates
我想在django模板标签中连接字符串
{% extend shop/shop_name/base.html %}
Run Code Online (Sandbox Code Playgroud)
这里shop_name是我的变量,我想将其与路径的其余部分连接起来.
假设我有shop_name
我希望结果能够扩展 shop_name=example.com
Ste*_*ven 370
用于:
{% with "shop/"|add:shop_name|add:"/base.html" as template %}
{% include template %}
{% endwith %}
Run Code Online (Sandbox Code Playgroud)
use*_*ser 99
不要add用于字符串,你应该定义一个这样的自定义标签:
创建一个文件: <appname>\templatetags\<appname>_extras.py
from django import template
register = template.Library()
@register.filter
def addstr(arg1, arg2):
"""concatenate arg1 & arg2"""
return str(arg1) + str(arg2)
Run Code Online (Sandbox Code Playgroud)
然后使用它作为@Steven说
{% with "shop/"|addstr:shop_name|addstr:"/base.html" as template %}
{% include template %}
{% endwith %}
Run Code Online (Sandbox Code Playgroud)
避免的原因 add
根据文件
此过滤器将首先尝试将两个值强制转换为整数...可以强制转换为整数的字符串将被求和,而不是连接 ...
如果两个变量都是整数,则结果将是意外的.
Ahs*_*san 12
我更改了文件夹层次结构
/shop/shop_name/base.html 到 /shop_name/shop/base.html
然后下面会工作.
{% extends shop_name|add:"/shop/base.html"%}
Run Code Online (Sandbox Code Playgroud)
现在它能够扩展base.html页面.
您不需要编写自定义标记。只需评估彼此相邻的变量即可。
"{{ shop name }}{{ other_path_var}}"
Run Code Online (Sandbox Code Playgroud)
小智 6
请参阅Django模板中的串联字符串:
对于早期版本的Django:
{{ "Mary had a little"|stringformat:"s lamb." }}
“玛丽有只小羊羔。”
其他:
{{ "Mary had a little"|add:" lamb." }}
“玛丽有只小羊羔。”