安装

环境要求

  • Python 3.10 或更高版本
  • Django 4.2 或更高版本

不依赖其他第三方包。


安装软件包

pip install django-seo-suite

添加到 INSTALLED_APPS

把 "seo_suite" 加入 INSTALLED_APPS。可选的 contrib 应用列在下面,按需引入即可。

# settings.py

INSTALLED_APPS = [
    # ... your existing apps ...
    "seo_suite",

    # Optional: admin-editable SEO keyed by URL path
    # Adds one table, one migration, Django Admin integration.
    "seo_suite.contrib.seopath",

    # Optional: admin-editable SEO for third-party models via generic relation
    # Requires django.contrib.contenttypes (usually already present).
    "seo_suite.contrib.seoobject",
]

执行迁移:

python manage.py migrate

核心应用 seo_suite 只附带一个迁移,用于创建 版本化 robots.txt 工作流所需的数据表。可选的 contrib 应用(seopath、seoobject)在安装后会各自添加自己的表。SEO 元数据 mixin 是抽象模型,因此只会在你自己应用的迁移中创建表。

可选:提供 robots.txt

要使用版本化的 robots.txt 工作流,在根 urlconf 中引入软件包的 URL 配置:

# urls.py
from django.urls import include, path

urlpatterns = [
    # ...
    path("", include("seo_suite.urls")),   # serves /robots.txt
]

详见 robots.txt 指南。


添加上下文处理器

seo 上下文处理器会把解析出的元数据以 {{ seo }} 的形式提供给每个模板。正是靠它,{% seo_head %} 才能在视图中无需任何额外代码即可工作。

# settings.py

TEMPLATES = [
    {
        "BACKEND": "django.template.backends.django.DjangoTemplates",
        "DIRS": [],
        "APP_DIRS": True,
        "OPTIONS": {
            "context_processors": [
                "django.template.context_processors.request",  # required
                # ... other context processors ...
                "seo_suite.context.seo",                       # add this
            ],
        },
    }
]

django.template.context_processors.request 是必需的,通常项目中已经配置好了。

seo 变量是一个 SimpleLazyObject:只有模板真正访问它时才会解析元数据,所以不使用 {% seo_head %} 的页面不会有任何额外开销。


在基础模板中添加模板标签

在基础模板的 <head> 部分加入:

{% load seo_suite %}
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  {% seo_head %}
  <!-- your other head content -->
</head>

{% seo_head %} 会渲染完整的头部内容块:标题、meta 标签、canonical、hreflang 备用链接、Open Graph、Twitter 卡片和 JSON-LD。如果需要更细粒度的控制,参见 自定义输出。


验证安装

不做任何额外配置,每个页面就已经会根据内置的全局默认值输出合理的默认内容(一个 robots meta 标签和一个 og:type 标签)。打开浏览器的开发者工具检查 <head>,至少应能看到:

<meta name="robots" content="index,follow">
<meta property="og:type" content="website">

快速上手 会带你在 5 分钟内为一个模型添加标题和描述。


可选:django.contrib.sites

django-seo-suite 不依赖 django.contrib.sites。如果已安装该应用,会自动检测当前站点 ID,并可据此为不同站点提供不同的 SEO 默认值。详见 站点级默认值。