参考:设置项(SEO_SUITE)
所有配置都放在 settings.py 里的一个 SEO_SUITE 字典中。没有写出的键沿用下面列出的包默认值。
# settings.py
SEO_SUITE = {
# ... only the keys you want to change ...
}
DEFAULTS 和 SITE_DEFAULTS 两个字典会与内置值 深度合并,而不是整体替换——在这两个字典里只需写出想覆盖的键。
完整参考
解析
| 键 |
类型 |
默认值 |
说明 |
RESOLVER_CLASS |
点分导入路径字符串 |
"seo_suite.resolver.Resolver" |
解析器类。替换它可以自定义元数据的收集或合并逻辑。必须是 seo_suite.resolver.BaseResolver 的子类。 |
SITE_ID_RESOLVER |
点分导入路径字符串或 None |
None |
一个 (request) -> int \| None 形式的可调用对象,返回当前站点 ID。为 None 时使用标准回退链(sites 框架 → settings.SITE_ID)。 |
| 键 |
类型 |
默认值 |
说明 |
DEFAULTS |
dict |
见下文 |
作为最低优先级层应用到每个页面的部分元数据。与内置默认值深度合并。 |
DEFAULTS.title_suffix |
str |
"" |
追加到每个页面标题末尾(例如 " \| My Site")。 |
DEFAULTS.robots |
str |
"index,follow" |
默认的 robots 指令。 |
DEFAULTS.og |
dict |
{"type": "website"} |
默认的 Open Graph 标签。 |
DEFAULTS.twitter |
dict |
{} |
默认的 Twitter 卡片标签。 |
按站点的默认值
| 键 |
类型 |
默认值 |
说明 |
SITE_DEFAULTS |
dict |
{} |
把站点 ID(int)或 None 映射到一个部分元数据字典。以优先级 20 应用,高于全局默认值。None 键用于兜底,匹配所有未单独配置的站点。 |
示例:
SEO_SUITE = {
"SITE_DEFAULTS": {
1: {"title_suffix": " | Main Site", "og": {"site_name": "Main Site"}},
2: {"title_suffix": " | Blog", "og": {"site_name": "Blog"}},
},
}
规范 URL
| 键 |
类型 |
默认值 |
说明 |
CANONICAL_DOMAIN |
str 或 None |
None |
强制所有规范 URL 使用该域名(例如 "www.example.com")。为 None 时使用请求的 Host 头。 |
FORCE_HTTPS_CANONICAL |
bool |
True |
把所有 http:// 规范 URL 升级为 https://。 |
LIST_CANONICAL_INCLUDES_PAGE |
bool |
True |
为 True 时,SeoListViewMixin 会给第 1 页之后的页面在规范 URL 后追加 ?page=N;为 False 时,所有分页共用同一个规范 URL。 |
hreflang
| 键 |
类型 |
默认值 |
说明 |
HREFLANG_X_DEFAULT |
bool |
True |
build_hreflang_alternates 是否添加一条指向 LANGUAGE_CODE 对应 URL 的 x-default 记录。 |
缓存
| 键 |
类型 |
默认值 |
说明 |
CACHE_TTL |
int |
0 |
已解析元数据的缓存 TTL(秒)。0 表示禁用缓存。只有基于对象的解析结果(带主键的模型实例)会被缓存。 |
CACHE_BACKEND |
str |
"default" |
使用的 Django 缓存别名。 |
CACHE_KEY_PREFIX |
str |
"seosuite:v1" |
所有缓存键的前缀。修改它可以一次性让全部缓存条目失效。 |
可选提供器
| 键 |
类型 |
默认值 |
说明 |
OBJECT_MODELS |
str 列表 |
[] |
seoobject contrib 应用的允许列表。格式:["app_label.model_name"](不区分大小写)。只有列表中的模型才会触发 SeoObject 查询。 |
JSON-LD
| 键 |
类型 |
默认值 |
说明 |
DEFAULT_SCHEMA_PROFILES |
str 列表 |
[] |
在全局默认层(优先级 10)应用到每个页面的 Schema 配置键。 |
JSONLD_SERIALIZER |
点分导入路径字符串 |
"seo_suite.schema.default_serializer" |
一个 (dict) -> str 形式的可调用对象,把 JSON-LD 字典序列化为字符串。默认实现会转义 <、> 和 & 以防止注入。 |
后台管理
| 键 |
类型 |
默认值 |
说明 |
ADMIN_GROUP_APPS |
bool |
True |
在 Django admin 首页把核心应用和可选 contrib 应用(seopath / seoobject)合并显示为一个 SEO Suite 分区,而不是各占一个区块。启动时会包装默认 admin 站点的 get_app_list,与 admin 的 URL 路径无关。设为 False 则每个应用保持独立分区。如果使用自定义的 AdminSite,请自行调用 seo_suite.admin_grouping.install_app_grouping(your_site)。 |
robots.txt
以下设置控制带版本管理的 robots.txt 工作流。它们不影响 SEO 元数据解析器,也不会改变 <meta name="robots"> 标签。
| 键 |
类型 |
默认值 |
说明 |
ROBOTS_TXT_FALLBACK |
str |
"User-agent: *\nAllow: /" |
当前站点没有激活的数据库版本时,/robots.txt 返回的内容。 |
ROBOTS_SITEMAP_URLS |
str 列表 |
[] |
以 Sitemap: 行的形式追加到每次返回的 robots.txt 末尾的 URL。相对 URL 会根据当前请求补全为绝对 URL。 |
ROBOTS_CACHE_TTL |
int |
0 |
渲染后的 robots.txt 内容的缓存 TTL(秒)。0 表示禁用缓存。任何版本被保存或激活时,缓存都会自动失效。使用与 CACHE_BACKEND 相同的后端。 |
完整示例
SEO_SUITE = {
# ---- resolution ----
"RESOLVER_CLASS": "seo_suite.resolver.Resolver",
"SITE_ID_RESOLVER": None,
# ---- global metadata defaults ----
"DEFAULTS": {
"title_suffix": " | My Site",
"robots": "index,follow",
"og": {
"type": "website",
"site_name": "My Site",
},
"twitter": {},
},
# ---- per-site defaults ----
"SITE_DEFAULTS": {},
# ---- canonical ----
"CANONICAL_DOMAIN": "www.mysite.com",
"FORCE_HTTPS_CANONICAL": True,
"LIST_CANONICAL_INCLUDES_PAGE": True,
# ---- hreflang ----
"HREFLANG_X_DEFAULT": True,
# ---- caching ----
"CACHE_TTL": 300,
"CACHE_BACKEND": "default",
"CACHE_KEY_PREFIX": "seosuite:v1",
# ---- optional providers ----
"OBJECT_MODELS": [],
# ---- JSON-LD ----
"DEFAULT_SCHEMA_PROFILES": [],
"JSONLD_SERIALIZER": "seo_suite.schema.default_serializer",
# ---- admin ----
"ADMIN_GROUP_APPS": True,
# ---- robots.txt ----
"ROBOTS_TXT_FALLBACK": "User-agent: *\nAllow: /",
"ROBOTS_SITEMAP_URLS": [],
"ROBOTS_CACHE_TTL": 0,
}