gpt4 book ai didi

python - 在模板中包含 View

转载 作者:太空狗 更新时间:2023-10-29 20:20:43 24 4
gpt4 key购买 nike

在 django 中,我有一个填充模板 html 文件的 View ,但在 html 模板中,我想包含另一个使用不同 html 模板的 View ,如下所示:

{% block content %}
Hey {{stuff}} {{stuff2}}!

{{ view.that_other_function }}

{% endblock content %}

这可能吗?

最佳答案

是的,您需要使用模板标签来做到这一点。如果您需要做的只是渲染另一个模板,您可以使用包含标签,或者可能只使用内置的 {% include 'path/to/template.html' %}

模板标签可以做任何你在 Python 中可以做的事情。

https://docs.djangoproject.com/en/3.0/howto/custom-template-tags/

[跟进]您可以使用 render_to_string 方法:

from django.template.loader import render_to_string
content = render_to_string(template_name, dictionary, context_instance)

如果您需要利用 context_instance,您要么需要从上下文中解析请求对象,要么将其作为参数传递给您的模板标记。

后续答案:包含标记示例

Django 期望模板标签位于名为“templatetags”的文件夹中,该文件夹位于已安装应用程序的应用程序模块中...

/my_project/
/my_app/
__init__.py
/templatetags/
__init__.py
my_tags.py

#my_tags.py
from django import template

register = template.Library()

@register.inclusion_tag('other_template.html')
def say_hello(takes_context=True):
return {'name' : 'John'}

#other_template.html
{% if request.user.is_anonymous %}
{# Our inclusion tag accepts a context, which gives us access to the request #}
<p>Hello, Guest.</p>
{% else %}
<p>Hello, {{ name }}.</p>
{% endif %}

#main_template.html
{% load my_tags %}
<p>Blah, blah, blah {% say_hello %}</p>

inclusion 标签呈现另一个模板,就像您需要的那样,但不必调用 View 函数。希望能让你前进。有关包含标签的文档位于:https://docs.djangoproject.com/en/3.0/howto/custom-template-tags/#inclusion-tags

关于python - 在模板中包含 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5878689/

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