跳转到主要内容

一个提供模板标签以使用Markdown(使用python-markdown2处理器)的Django应用程序

项目描述

一个小的Django应用程序,提供模板标签以使用Markdown,使用python-markdown2库。

名字中的“deux”是什么意思?

这个项目的明显名字应该是django-markdown2。然而,已经有了一个同名项目,名字混淆对任何人都没有帮助。此外,我在学校里学习了12年的法语沉浸式课程:不妨派上用场。

那么为什么还要创建另一个项目呢?

因为我想做点稍微不同的事情。Django-markdown2的markdown过滤器将"extras"作为参数 -- 唯一的例外是将"safe"转换为python-markdown2的safe_mode参数。这对于快速使用来说很方便。我的用例更常见:在Django模板中使用大量markdown过滤器和块,并使用相同的python-markdown2选项集。

安装

选择以下最适合您的一个

  • 从PyPI安装最新版本

      pip install django-markdown-deux
    

    或者,如果您使用ActivePython

      pypm install django-markdown-deux
    

    这些应该会安装依赖的python-markdown2包。

  • 获取源码树的git克隆版本

      git clone git://github.com/trentm/django-markdown-deux.git
    

    您可能需要一个特定的标签

      cd django-markdown-deux
      git tag -l   # list available tags
      git checkout $tagname
    

    然后您需要在您的PYTHONPATH上创建“lib”子目录

      python setup.py install # or 'export PYTHONPATH=`pwd`/lib:$PYTHONPATH'
    

    您还需要python-markdown2库

      git clone git@github.com:trentm/python-markdown2.git
      cd python-markdown2
      python setup.py install   # or 'export PYTHONPATH=`pwd`/python-markdown2/lib'
    

Django项目设置

  1. markdown_deux添加到项目"settings.py"中的INSTALLED_APPS

  2. 可选地设置一些MARKDOWN_DEUX_*设置。请参阅下文的"设置"部分。

用法

markdown_deux功能通常有一个可选的"style"参数。这是对python-markdown2处理器的选项集的名称。如果未提供参数,将使用"默认"样式。有关更多信息,请参阅下文的MARKDOWN_DEUX_STYLES设置。

markdown模板过滤器

{% load markdown_deux_tags %}
...
{{ myvar|markdown:"STYLE" }}      {# convert `myvar` to HTML using the "STYLE" style #}
{{ myvar|markdown }}              {# same as `{{ myvar|markdown:"default"}}` #}

markdown模板块标签

{% load markdown_deux_tags %}
...
{% markdown STYLE %}        {# can omit "STYLE" to use the "default" style #}
This is some **cool**
[Markdown](http://daringfireball.net/projects/markdown/)
text here.
{% endmarkdown %}

markdown_allowed模板标签

在模板中

{% markdown_allowed %}

将输出一个简短的HTML文本,表示Markdown语法允许。这对于放置在接受Markdown语法的表单元素下方很有用。您还可以将其用作类似表单字段的help_text,如下所示

# myapp/forms.py
from markdown_deux.templatetags.markdown_deux_tags import markdown_allowed
class MyForm(forms.Form):
    #...
    description = forms.CharField(
        label="Description (required)",
        widget=forms.Textarea(attrs={"rows": 5}),
        help_text=_secondary_span("A brief description of your thing.<br/> "
            + markdown_allowed()),
        required=True)

markdown_cheatsheet标签

{% markdown_cheatsheet %}

输出HTML,列出了Markdown的一些更常见功能。

在您的Python代码中使用markdown_deux.markdown(TEXT, STYLE)

上面的markdown过滤器和块标签最终使用这个markdown_deux.markdown(...)函数。您可能会发现,在Python代码中(例如在视图中,在模型的.save()方法中)进行Markdown处理很有用。

设置

此应用程序的所有设置都是可选的。

MARKDOWN_DEUX_STYLES设置

将样式名称映射到python-markdown2的markdown2.markdown(text, **kwargs)的关键字参数字典。例如,默认设置实际上相当于

MARKDOWN_DEUX_STYLES = {
    "default": {
        "extras": {
            "code-friendly": None,
        },
        "safe_mode": "escape",
    },
}

即仅定义了"默认"样式,它仅使用code-friendly extra并转义给定的Markdown中的原始HTML(为了安全起见)。

以下是如何添加自己的样式并保留默认样式的方法

# settings.py
from markdown_deux.conf.settings import MARKDOWN_DEUX_DEFAULT_STYLE

MARKDOWN_DEUX_STYLES = {
    "default": MARKDOWN_DEUX_DEFAULT_STYLE,
    "trusted": {
        "extras": {
            "code-friendly": None,
        },
        # Allow raw HTML (WARNING: don't use this for user-generated
        # Markdown for your site!).
        "safe_mode": False,
    },
    # Here is what http://code.activestate.com/recipes/ currently uses.
    "recipe": {
        "extras": {
            "code-friendly": None,
        },
        "safe_mode": "escape",
        "link_patterns": [
            # Transform "Recipe 123" in a link.
            (re.compile(r"recipe\s+#?(\d+)\b", re.I),
             r"http://code.activestate.com/recipes/\1/"),
        ],
        "extras": {
            "code-friendly": None,
            "pyshell": None,
            "demote-headers": 3,
            "link-patterns": None,
            # `class` attribute put on `pre` tags to enable using
            # <http://code.google.com/p/google-code-prettify/> for syntax
            # highlighting.
            "html-classes": {"pre": "prettyprint"},
            "cuddled-lists": None,
            "footnotes": None,
            "header-ids": None,
        },
        "safe_mode": "escape",
    }
}

MARKDOWN_DEUX_HELP_URL设置

指向完整Markdown语法的默认URL的链接。此链接仅出现在markdown_allowedmarkdown_cheatsheet模板标签的输出中。

默认值为http://daringfireball.net/projects/markdown/syntax,这是Markdown语法的官方参考。然而,如果您的网站使用具有特定调整的Markdown,您可能更喜欢使用自己的覆盖。例如,ActiveState Code使用

MARKDOWN_DEUX_HELP_URL = "/help/markdown/"

链接到其自己的Markdown语法注释URL

项目详情


下载文件

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

源代码分发

django-markdown-deux-1.0.6.zip (18.2 kB 查看散列值)

上传时间 源代码

由以下机构支持