一种可扩展的方法,用于检查任何django cms插件中的断开链接。
djangocms-link-manager的Python项目详细描述
一种可扩展的方法,用于检查几乎所有 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.
延伸
此包当前支持按类名列出的插件: Bootstrap3ButtonCMSPlugin和LinkPlugin来自包: ^分别是{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方案的支持:ftp, ftps、http、https、bitcoin、mailto和tel。如果一个项目 需要验证其他方案,可以将它们添加到链接管理器中 (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。