跳转到主要内容

django-meta的社交元标签混入

项目描述

Latest PyPI version Monthly downloads Python versions Latest Travis CI build status Test coverage Test coverage Code Climate

警告

版本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是一个字符串,按以下顺序评估

    • 带有元属性作为参数调用的模型方法名称

    • 不带参数调用的模型方法名称

    • 模型属性名称(在运行时评估)

    • 字符串字面量(如果上述所有内容都不存在)

如果 valueFalse 或在运行时被评估为 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

用法

  1. django-meta 添加到已安装的应用中

    INSTALLED_APPS = [
        ...
        'meta',
        'meta_mixin',
    ]
  2. 根据文档配置 django-metahttps://github.com/nephila/django-meta#configuration

  3. 将元信息添加到您的模型中

    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',
            ...
        }
  4. 使用 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
  5. 在您的模板中包含 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')),
)

Twitter

  • 摘要卡

  • 带大图的摘要卡

  • 应用卡

您可以通过在项目设置中定义嵌套元组来覆盖 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 (8.2 kB 查看散列

上传时间 源代码

构建分布

django_meta_mixin-0.3.0-py2.py3-none-any.whl (9.6 kB 查看散列

上传时间 Python 2 Python 3

由以下支持