Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何制作django';s标记过滤器将回车转换为<;br/>;?_Python_Django_Markdown - Fatal编程技术网

Python 如何制作django';s标记过滤器将回车转换为<;br/>;?

Python 如何制作django';s标记过滤器将回车转换为<;br/>;?,python,django,markdown,Python,Django,Markdown,如何更改标记过滤器中的默认行为,使其将换行符转换为br标记?您可以编写一个调用标记的过滤器,然后在其输出上执行该操作。我认为混淆换行符语法不是一个好主意。。。 我同意亨里克的评论。从: 如果确实要使用标记插入一个中断标记,请在一行末尾加上两个或多个空格,然后键入return 是的,创建一个需要更多的努力,但是一个简单的“每一个换行符都是一个”规则不适用于降价。Markdown的电子邮件样式的区块引用和多段落列表项在您使用硬分隔符格式化它们时效果最好,看起来也更好 你看过其他Django标记选项了

如何更改标记过滤器中的默认行为,使其将换行符转换为br标记?

您可以编写一个调用标记的过滤器,然后在其输出上执行该操作。

我认为混淆换行符语法不是一个好主意。。。 我同意亨里克的评论。从:

如果确实要使用标记插入一个

中断标记,请在一行末尾加上两个或多个空格,然后键入return

是的,创建一个

需要更多的努力,但是一个简单的“每一个换行符都是一个

”规则不适用于降价。Markdown的电子邮件样式的区块引用和多段落列表项在您使用硬分隔符格式化它们时效果最好,看起来也更好

你看过其他Django标记选项了吗,textile和StructuredText?它们的语法可能更适合您


但是如果你还想。。。 一个粗略而现成的方法是将降价和过滤器链接起来

这将运行标记过滤器,然后运行linebreaksbr过滤器,该过滤器将
\n
替换为

。你可能会以太多的换行结束,但这对你来说可能比太少更好

如果你能找到更好的解决方案,你可以

  • 按照John在回答中的建议,编写一个自定义过滤器

  • 深入研究Django使用的库,它实现了您想要的换行符语法。然后将扩展与过滤器一起使用

    {{value}标记:“linebreakextension}


  • 似乎有一个
    换行符
    筛选器将
    \n
    字符转换为



    请参阅或。

    编辑:截至2011年6月底,以下扩展现在包含在Python标记中。

    下面是我编写的一个降价扩展,目前正在我的网站上测试,以完全满足您的需求:

    """
    A python-markdown extension to treat newlines as hard breaks; like
    StackOverflow and GitHub flavored Markdown do.
    
    """
    import markdown
    
    
    BR_RE = r'\n'
    
    class Nl2BrExtension(markdown.Extension):
    
        def extendMarkdown(self, md, md_globals):
            br_tag = markdown.inlinepatterns.SubstituteTagPattern(BR_RE, 'br')
            md.inlinePatterns.add('nl', br_tag, '_end')
    
    
    def makeExtension(configs=None):
        return Nl2BrExtension(configs)
    
    我把它放在一个名为mdx_nl2br.py的文件中,然后放在我的PYTHONPATH上。然后,您可以在Django模板中使用它,如下所示:

    {{ value|markdown:"nl2br" }}
    
    import markdown
    md = markdown.Markdown(safe_mode=True, extensions=['nl2br'])
    converted_text = md.convert(text)
    
    如果希望在常规代码中使用它,可以执行以下操作:

    {{ value|markdown:"nl2br" }}
    
    import markdown
    md = markdown.Markdown(safe_mode=True, extensions=['nl2br'])
    converted_text = md.convert(text)
    

    用于使用和编写扩展。

    您可以在
    附加设置中添加
    “换行中断”:True
    ,以覆盖默认的标记样式:

    MARKDOWN_DEUX_STYLES = {
        "default": {
            "extras": {
                "code-friendly": None,
                "break-on-newline": True,
            },
            "safe_mode": "escape",
        }
    }
    
    python-markdown2的定义:

    换行符换行符:在换行时将单个换行符替换为


    那么,你是想说你想让markdown表现得和它想象的不一样吗?标记是一种特定的语法。如果你想发明你自己的语法,那很好,但那就不再是降价了。不太清楚你在这里得到了什么。@Henrik Joretag-你认为StackOverflow做了什么?@vikingosegundo捕获良好,现已修复。因此,这显然没有在其中发布,或者至少没有在其最新版本中发布?@poolie,自从我写下这个答案后,降价团队现在已经将扩展包含在降价中。这就是接受它的原因:是的,它不在pypi(2.0.3)的版本中,但在主干中。谢谢你加上这个@普尔和其他人。我刚刚了解到2.1.0版现在在PyPi上,它包含了这个更改。