【问题标题】:How to add custom preprocessor/postprocessor to django-wiki render?如何将自定义预处理器/后处理器添加到 django-wiki 渲染?
【发布时间】:2018-10-24 01:37:28
【问题描述】:

我计划将我的自定义“语法扩展”添加到基于 django-wiki (https://github.com/django-wiki/django-wiki) 的 wiki。

例如我想要这样的东西:

{mytemplate param1="value"}

展开成这样的事情:

 <div class="mytemplate"><some_code_that_uses_param1></div>

那么,如何将这样的自定义语法扩展添加到 django-wiki? (我宁愿在不修改 django-wiki 的源代码的情况下这样做)

【问题讨论】:

    标签: python django django-wiki


    【解决方案1】:

    好的,经过一番挖掘,我找到了解决方案。也许它对某人有用。

    Django-wiki 使用 python markdown 模块 (https://github.com/Python-Markdown/markdown)。它在 github 上的文档中有几个损坏的(过时的)示例(希望它们有一天会更新),但经过几次修复后它们仍然可以开始工作。这是降价扩展的工作(使用当前版本的python-markdown)示例:

    from markdown.inlinepatterns import Pattern
    from markdown.util import etree
    from markdown.extensions import Extension
    MYPATTERN = r'\{mytemplate (?P<param>\w+)\}'
    class EmphasisPattern(Pattern):
        def handleMatch(self, m):
            el = etree.Element('em')
            el.text = m.group('param')
            return el
    class MyExtension(Extension):
        def extendMarkdown(self, md, md_globals):
            em = EmphasisPattern(MYPATTERN)
            md.inlinePatterns.add('example', em, "<not_strong")
    def makeExtension(configs={}):
        return MyExtension(configs=configs)
    

    要使其与 django-wiki 一起使用,您应该将 WIKI_MARKDOWN_KWARGS 添加到 django 的 settings.py:

    WIKI_MARKDOWN_KWARGS = {
        'extensions': [
            'my_extenstion_filename_inside_django_project_folder',
        ]
    }
    

    【讨论】:

      猜你喜欢
      • 2021-11-27
      • 1970-01-01
      • 2012-03-11
      • 1970-01-01
      • 1970-01-01
      • 2021-06-22
      • 1970-01-01
      • 2021-12-29
      相关资源
      最近更新 更多