gpt4 book ai didi

Django:在 block 外带有标签

转载 作者:行者123 更新时间:2023-12-03 17:52:27 25 4
gpt4 key购买 nike

如果在块之外声明“with”标签,则它似乎不起作用,如下所示:

{% extends 'base.html' %}
{% with my_var=1 %}

{% block test1 %}
{{my_var}}
{% endblock %}

{% block test2 %}
{{my_var}}
{% endblock %}

{% endwith %}

上面的模板没有显示任何内容,因为 my_var 没有在这些块中传递。
我怎样才能克服这个问题?

最佳答案

我是通过在 Jinja2 中使用 Tornado 来到 Django 的,由于无法设置 (a) 可以在模板中定义的变量(不是 View )和 (b) 可以在它派生的基本模板中使用,我被逼疯了.查看来自 django-libs 的一小段四行代码,我能够组装出这样的东西,效果很好。以下是应出现在各个块中的标题字符串示例。

设置.py -- 添加到模板 (Django 1.10+)

TEMPLATES = {
...
builtins = ['mysite...wherever...templatetags',]
}

mysite.whereever.templatetags.py
from django import template
register = template.Library()

@register.simple_tag(takes_context=True)
def setvar(context, key, value):
context.dicts[0][key] = value
return ''

base.html
{% block settings %}
{% comment %}
Put this at the TOP of the template before
any blocks that use variables.
{% endcomment %}
{% endblock settings %}

<html>
<head><title>{{title}}</title></head>
<body><h1>My Site: {{title}}</h1>
{% block body %}
{% endblock body %}
</body></html>

menu.html -- 未在 View 中设置“标题”的模板:
{% extends "base.html" %}
{% block settings %}
{{ block.super }} {% comment %}optional{% endcomment %}
{% setvar 'title' 'Menu' %}
{% endblock %}
{% block body %}
<ul><li>Fish</li><li>Steak</li></ul>
{% endblock %}

现在标题将出现在 HTML 中的两个位置,即使它是在派生模板中定义的,但出现在顶部模板中。

关于Django:在 block 外带有标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17661667/

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