首页 > 解决方案 > 如何在 django 模板中设置动态 seo 标签

问题描述

我正在开发一个 djanog 项目,我想为其中的每个页面呈现动态元标记和标题。现在我正在尝试这样做我已经在 header.html 文件中添加了这样的块

{% block seo %}
{% endblock %}

主模板的层次结构(所有其他模板都从中扩展)

{% include 'header.html' %}
{% include 'menu.html' %}
{% block body %}
{% endblock %}
{% include 'footer.html' %}

现在在应用程序模板上,我正在尝试像这样呈现这些 seo 标签

{% extends 'main.html' %}
{% block seo %}
<title>example.cpm</title>
<mete name="description" content="lorem ipsum">
{% endblock %}

但是这种方法对我不起作用,请在这方面帮助我

标签: pythondjangodjango-templates

解决方案


您应该将其定义为 header.html :

{% block seo %}
    <title>example.cpm</title>
    <meta name="description" content="lorem ipsum">
{% endblock %}

并且无需在应用模板上重新定义块seo。

根据文档,include 标签应该被认为是“渲染这个子模板并包含 HTML”的实现,而不是“解析这个子模板并包含它的内容,就好像它是父模板的一部分一样”。这意味着包含的模板之间没有共享状态——每个包含都是一个完全独立的渲染过程。

块在被包含之前被评估。这意味着包含来自另一个块的模板将包含已经评估和渲染的块 - 而不是可以被例如扩展模板覆盖的块。


推荐阅读