安装¶
环境要求¶
- Python 3.10 或更高版本
- Django 4.2 或更高版本
不依赖其他第三方包。
安装软件包¶
添加到 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",
]
执行迁移:
核心应用 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>,至少应能看到:
快速上手 会带你在 5 分钟内为一个模型添加标题和描述。
可选:django.contrib.sites¶
django-seo-suite 不依赖 django.contrib.sites。如果已安装该应用,会自动检测当前站点 ID,并可据此为不同站点提供不同的 SEO 默认值。详见 站点级默认值。