跳转到主要内容

在几乎任何django CMS插件中检查断链的可扩展方法。

项目描述

https://travis-ci.org/divio/djangocms-link-manager.svg?branch=master

在几乎任何django CMS插件中检查断链的可扩展方法。

概述

在django CMS中,有众多插件提供超链接功能,每个插件都有自己的字段来存储各种类型的超链接。因此,在项目整个范围内查找坏链接可能成为一项挑战。本项目试图以可扩展的方式提供解决方案。

安装

此软件包需要Python 2.7或更高版本以及Django 1.8或更高版本。

首先,从PyPI安装此软件包

pip install djangocms-link-manager

然后将它添加到您的INSTALLED_APPS

# settings.py
...
INSTALLED_APPS = [
    ...
    'djangocms_link_manager',
]

使用方法

运行此软件包最简单的方法是

python manage.py check_links

但是,此命令接受多个可选参数

--verify-exists     Check that each link's target exists (use caution,
                    makes HTTP HEAD requests).
--scheme SCHEME     Default scheme to use for scheme-less URLs
                    (default: "http").
--host NETLOC       Default [host:port] to use for relative URLs (defaults
                    to "localhost:8000").
--template TEMPLATE Override the report rendering template.
--mail-managers     Instead of printing report to the console, email it to
                    the addresses defined in the MANAGERS list in the
                    project's settings.py.

扩展

此包目前支持以下通过类名识别的插件:Bootstrap3ButtonCMSPlugin和LinkPlugin,分别来自aldryn_bootstrap3和djangocms_link包。要添加对新CMSPlugin的支持,只需创建一个继承自djangocms_link_manager.link_manager.LinkManager的类,并根据您希望支持的CMSPlugin的具体情况重写check_link()方法。

创建完成后,在启动时使用以下代码将链接管理器注册到链接管理器池中:

from djangocms_link_manager.link_manager import LinkManager, LinkReport
from djangocms_link_manager.link_manager_pool import link_manager_pool

class MyLinkPluginLinkManager(LinkManager):
    """MyLinkPlugin only contains the fields 'name' and 'url'."""

    def check_link(self, instance, verify_exists=False):
        """Override this method and adapt to MyLinkPlugin."""
        return LinkReport(
            valid=self.validate_url(instance.url, verify_exists=verify_exists),
            text=instance.name,
            url=instance.url
        )

link_manager_pool.register('MyLinkPlugin', MyLinkPluginLinkManager)

支持额外的URL方案

此包已经提供了以下URL方案的支持:ftp、ftps、http、https、bitcoin、mailto和tel。如果项目需要验证其他方案,它们可以通过包含一个名为validate_MYSCHEME的方法添加到链接管理器(LinkManager的子类),该方法的签名如下:

def validate_MYSCHEME(self, parts, verify_exists=False):
    # Do your thing here
    if valid:
        return True
    else:
        return False

将“MYSCHEME”替换为您选择的方案的小写名称。

当verify_exists设置为True时,其目的是检查资源是否真正可用。例如,对于http(s)、ftp(s)验证器将实际尝试获取URL(使用HTTP HEAD请求),如果结果是HTTP 404错误,则返回False。请负责任地使用此功能。

parts是包含URL各个部分的字典,如下所示

parts = {
    'scheme': ...,
    'netloc': ...,
    'path': ...,
    'params': ...,
    'query': ...,
    'fragment': ...,
}

有关这些元素的更多信息,请参阅urllib.parse的文档。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码发行版

djangocms-link-manager-0.2.1.tar.gz (10.0 kB 查看哈希值)

上传时间 源代码

构建发行版

djangocms_link_manager-0.2.1-py2-none-any.whl (16.1 kB 查看哈希值)

上传时间 Python 2

支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面