一种可扩展的方法,用于检查任何django cms插件中的断开链接。

djangocms-link-manager的Python项目详细描述


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

一种可扩展的方法,用于检查几乎所有 Django CMS插件。

概述

Django CMS中有许多插件提供超链接功能 每个都有自己的字段,用于存储各种类型的超链接。作为一个 结果,在整个项目中发现不好的链接可能成为一个挑战。 此项目试图以可扩展的方式提供解决方案。

安装

这个包需要Python2.7或更高版本和Django1.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.

延伸

此包当前支持按类名列出的插件: Bootstrap3ButtonCMSPluginLinkPlugin来自包: ^分别是{tt4}$和djangocms_link。添加对 一个新的cmsplugin,只需编写一个创建子类的类 djangocms_link_manager.link_manager.LinkManager并重写 check_link()方法,根据您希望的cmsplugin的详细信息 支持。

创建后,将链接管理器注册到上的链接管理器池中 启动时使用:

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方案的支持:ftpftpshttphttpsbitcoinmailtotel。如果一个项目 需要验证其他方案,可以将它们添加到链接管理器中 (linkmanager的子类)只需包含一个名为 validate_MYSCHEME签名:

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请求)并将返回 False如果结果是http 404错误。负责任地使用它。

parts是url部分的一个dict,如下所示:

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

有关这些元素的更多信息,请查看 urllib.parse

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何计算大于平均值的数字的百分比。?   JavaFX中后台执行任务的服务   xml解析用于解析java中推荐的xml解析器的小文档   java Nativescript+无法实例化接收器。。。。没找到上课的机会   maven是在数百个Java测试类上应用自定义JUnit测试运行程序的更简单方法   泛型如何引用接口在Java中实现的类类型?   java序列化程序SimpleXML只发送第一行   java字符串组合/排列   java无法创建EMRclient Sdkclientexception   JavaMaven不生成“persistence.xml”文件   java找不到主要方法   java中的正则表达式正负双精度   接口对于我试图解决的问题,有Java设计模式吗?   java在创建bean时获取异常   java如何创建<?使用JCodeModel扩展子类型>?   java在javafx中制作搜索栏   java Compare Hashmap with List=new Arraylist()   java接口与具体类