Django 用不同的文本呈现相同的模板?

Django 用不同的文本呈现相同的模板?,django,Django,我有大约4-5个Django项目的模板。我想在每个模板上使用大约10页(10组不同的内容/文本) 我一直在使用上下文来填充每页呈现时的相关内容 但是,我不确定是否有任何潜在的性能损失,因为内容相当大。是否有一种简洁高效的方法来呈现一个模板,其中包含与上一页上单击的链接相关的内容 我目前正在做的事情: index.html <div class='well well-sm well-md well-lg'> <h1> {{variable1}} </h1>

我有大约4-5个Django项目的模板。我想在每个模板上使用大约10页(10组不同的内容/文本)

我一直在使用上下文来填充每页呈现时的相关内容

但是,我不确定是否有任何潜在的性能损失,因为内容相当大。是否有一种简洁高效的方法来呈现一个模板,其中包含与上一页上单击的链接相关的内容

我目前正在做的事情:

index.html

<div class='well well-sm well-md well-lg'>

<h1> {{variable1}} </h1>

</div>
<div class='well well-sm well-md well-lg'>

{% if page_type == 1 %}
    {%include "page_type1.html"%}
{%else%}
    {%include "page_type2.html"%}
{%endif
</div>
基本上,我想知道是否有一种不必使用上下文就能完成上述任务的方法。还是我必须为每个页面创建一个模板

检查django 在url中:

或者,如果您没有页面id/名称系统,您可以使用:

def page(request):
    url = request.path
    value = dict[url]
    render (...) 

您需要分两步求解

  • 确定上一页,以便选择适当的文本
  • 您可以在视图中解决此问题。只需设置一些要传递给模板的上下文变量。我相信这在模板处理中不容易做到,视图更好

    示例代码

    def page(request):
       if previous_page == "some page 1"
           page_type = 1
       elif previous_page == "some page 2"
           page_type = 2
       return render(request, 'index/base.html', {'page_type': page_type})
    
  • 然后在模板中使用标签来使用适当的模板
  • 示例index.html

    <div class='well well-sm well-md well-lg'>
    
    <h1> {{variable1}} </h1>
    
    </div>
    
    <div class='well well-sm well-md well-lg'>
    
    {% if page_type == 1 %}
        {%include "page_type1.html"%}
    {%else%}
        {%include "page_type2.html"%}
    {%endif
    </div>
    
    
    {%如果页面类型==1%}
    {%include“page_type1.html”%}
    {%else%}
    {%include“page_type2.html”%}
    {%endif
    

    你需要为呈现所需的html编写两个模板
    page_type1.html
    page_type2.html

    你看过了吗?@JensAstrup-hay,是的,我一直在尝试使用它,但我无法根据上一页单击的链接计算出如何扩展块。我认为这可能是某种条件语句,但它做到了似乎不起作用。我有一个url名称系统,但为了保持呈现不同内容的'index/base.html',dict的文本越来越长。我正在试图找到一种方法来做到这一点,而不必使用上下文dict。嗯,您应该创建模型并将它们保存在数据库中,这不会导致不必要的开销吗每个页面请求都要访问数据库?特别是一些文本。我很懒,所以我不想创建很多模板,但我相信这样做可能会比每次单击db往返更有效。
    <div class='well well-sm well-md well-lg'>
    
    {% if page_type == 1 %}
        {%include "page_type1.html"%}
    {%else%}
        {%include "page_type2.html"%}
    {%endif
    </div>