django-meta的社交元标签混入
项目描述
警告
版本0.2.1是django-meta-mixin的最后一个版本。
所有代码库、功能和文档都已迁移到https://github.com/nephila/django-meta,并将作为django-meta 1.0发布。
django-meta 1.0是django-meta-mixin的替代品:将发布一个空的django-meta-mixin 0.3包以满足依赖关系,但所有后续的功能和修复都将发布在django-meta中。
概念
django-meta-mixin提供了一种混入来处理模型中的元数据。
实际数据在运行时评估,从模型属性和方法中获取值。
要使用它,定义一个名为_metadata的属性,作为标签/值对的字典;
tag是元标签的名称,如
模板中所用 value是一个字符串,按以下顺序评估
带有元属性作为参数调用的模型方法名称
不带参数调用的模型方法名称
模型属性名称(在运行时评估)
字符串字面量(如果上述所有内容都不存在)
如果 value 为 False 或在运行时被评估为 False,则跳过此标签。
要使用此混入,必须在模型实例上调用 as_meta(),例如在 get_context_data()
中。
请求
as_meta() 接受本地保存的 request 对象,并且可以通过使用 get_request 方法在方法中使用。
公共接口
ModelMeta.get_meta(request=None):返回元数据属性定义。通常这些在模型的 _metadata 属性中设置;
ModelMeta.as_meta(request=None):返回适合在模板中使用的对象的元表示;
ModelMeta.get_request():返回 request 对象,如果将其作为 as_meta 的参数给出;
ModelMeta.get_author():返回当前实例的作者对象。默认实现不返回有效的对象,必须在应用程序中根据应用程序域中的作者进行覆盖;
ModelMeta.build_absolute_uri(url):创建一个绝对URL(即:包含协议和域名);这是从 request 对象生成的,如果将其作为 as_meta 的参数给出;
安装
从 PyPi
pip install django-meta-mixin
从 github
pip install -e git+https://github.com/nephila/django-meta-mixin#egg=django-meta-mixin
用法
将 django-meta 添加到已安装的应用中
INSTALLED_APPS = [ ... 'meta', 'meta_mixin', ]
根据文档配置 django-meta(https://github.com/nephila/django-meta#configuration)
将元信息添加到您的模型中
from django.db import models from meta_mixin.models import ModelMeta class MyModel(ModelMeta, models.Model): name = models.CharField(max_length=20) abstract = models.TextField() ... _metadata = { 'title': 'name', 'description': 'abstract', ... }
使用 as_meta 方法在上下文中推送元数据
class MyView(DetailView): ... def get_context_data(self, **kwargs): context = super(MyView, self).get_context_data(self, **kwargs) context['meta'] = self.get_object().as_meta(self.request) return context
在您的模板中包含 meta_mixin/meta.html 模板
{% load sekizai_tags %} <html {% render_block 'html_extra' %}> <head> {% include "meta_mixin/meta.html" %} </head> <body> </body> </html>
注意
对于 Google+ 支持,必须在您的模板中添加 {% render_block 'html_extra' %} 以添加对象类型定义。请参阅相关 Google+ 片段文档(https://developers.google.com/+/web/snippet/)
示例
查看 example 文件夹以获取示例实现。
可用的属性
django-meta-mixin 目前支持以下属性
通用属性
title:对象标题,
description:通用对象描述,用于 SEO 并作为特定描述的默认值,
keywords:用于 SEO 的通用关键词
locale:广告对象区域(如果有的话)
image:用于对象的图像
object_type:默认对象类型
published_time:发布日期和时间
modified_time:修改日期和时间
expiration_time:过期日期和时间
url:规范对象的 URL
Open Graph 属性
og_description:Open Graph 中的对象描述
og_type:Open Graph 中的对象类型
og_app_id:Facebook App ID
og_profile_id:作者的 Facebook profileID
og_publisher:发布者的 Facebook URL
og_author_url:作者的 Facebook URL
tag:对象标签
Twitter Cards 属性
twitter_description:Twitter 卡上的对象描述(目前最多 200 个字符)
twitter_type:Twitter 卡类型
twitter_site:网站 Twitter 账户
twitter_author:作者 Twitter 账户
Google+ 片段属性
gplus_description:对象描述
gplus_type:根据 schema.org 类型指定的对象类型
gplus_author:作者 Google+ 账户
对象类型
django-meta-mixin 随附以下对象类型,适用于它支持的每个元标签集
通用 / OpenGraph
文章
网站
您可以通过在项目设置中定义 META_OBJECT_TYPES/META_FB_TYPES 嵌套元组来覆盖,如下所示
META_OBJECT_TYPES = ( ('Article', _('Article')), ('Website', _('Website')), ) META_FB_TYPES = ( ('Article', _('Article')), ('Website', _('Website')), )
摘要卡
带大图的摘要卡
应用卡
您可以通过在项目设置中定义嵌套元组来覆盖 META_TWITTER_TYPES,例如:
META_TWITTER_TYPES = ( ('summary', _('Summary Card')), ('summary_large_image', _('Summary Card with Large Image')), ('app', _('App Card')), )
Google+ / Schema.org
文章
博客
网页
网站
活动
产品
地点
人物
您可以通过在项目设置中定义 META_GPLUS_TYPES 嵌套元组来覆盖,例如:
META_GPLUS_TYPES = ( ('Article', _('Article')), ('Blog', _('Blog')), ('WebPage', _('Page')), ('WebSite', _('WebSite')), ('Event', _('Event')), ('Product', _('Product')), ('Place', _('Place')), ('Person', _('Person')), )
设置
上述一些属性可以在模型中设置,也可以通过设置参数设置
image: META_DEFAULT_IMAGE(必须是绝对URL)
object_type: META_SITE_TYPE(默认:第一个 META_OBJECT_TYPES)
og_type: META_FB_TYPE(默认:第一个 META_FB_TYPES)
og_app_id: META_FB_APPID(默认:空白)
og_profile_id: META_FB_PROFILE_ID(默认:空白)
og_publisher: META_FB_PUBLISHER(默认:空白)
og_author_url: META_FB_AUTHOR_URL(默认:空白)
twitter_type: META_TWITTER_TYPE(默认:第一个 META_TWITTER_TYPES)
twitter_site: META_TWITTER_SITE(默认:空白)
twitter_author: META_TWITTER_AUTHOR(默认:空白)
gplus_type: META_GPLUS_TYPE(默认:第一个 META_GPLUS_TYPES)
gplus_author: META_GPLUS_AUTHOR(默认:空白)
历史
0.2.2(XXXX-XX-XX)
在Django 1.9的模板中使用autoescape关闭
0.2.1 (2015-10-17)
为facebook、twitter、google plus添加对象类型
添加翻译
0.2.0 (2015-10-03)
添加支持在提取元数据时使用请求
将一个(可选)参数添加到类方法调用中。
添加对editorconfig的支持
添加get_meta方法以允许自定义元数据
在生成完整URL时使用META_SITE_PROTOCOL
扩展文档
清理代码
使用 build_absolute_url 代替 make_full_url
0.1.1 (2014-06-20)
添加 make_full_url 方法以检索完整对象URL。
0.1.0 (2014-04-19)
首次发布在PyPI上。
项目详情
django-meta-mixin-0.3.0.tar.gz的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | b3910fd7b45c55660f49674c555a786abfbcd8a2518e3cf6565795eabea83929 |
|
MD5 | 8d9ed1dd7f7d0bc1ac067d063163f091 |
|
BLAKE2b-256 | 69bafa6bddb77ea324bbd8865d21013ac5361d45da83fb29aba8c1bf068de893 |