0

我计划基于 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 的源代码的情况下这样做)

4

1 回答 1

0

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

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',
    ]
}
于 2018-10-25T06:04:55.543 回答