Django模版过滤器Markdown

Django有很多内置的模板过滤器,允许你修改模板中的变量。过滤器看起来{ {variable|my_filter}}。  

带参数的过滤器类似于{ {variable|my_filter:"foo"}}。您可以对一个变量应用任意多的过滤器,例如,{ {variable|filter1|filter2}},它们中的每一个都将应用于前面生成的输出。

创建一个自定义过滤器,以便能够在博客文章中使用markdown语法,然后在模板中将文章内容转换为HTML。

使用pip安装markdown模块

python -m pip install Markdown

编辑blog_tags.py

from django import template
from django.utils.safestring import mark_safe
import markdown

register = template.Library()

@register.filter(name='markdown')
def markdown_format(text):
    return mark_safe(markdown.markdown(text))

blog_tags的代码在自定义模版标签时创建,更多内容请看

Django自定义模版标签-CSDN博客

为了避免函数名和markdown模块之间的冲突,我们将函数名命名为markdown_format,并将过滤器名命名为markdown,以便在模板中使用,例如{ {variable|markdown}}。  

Django会转义过滤器生成的HTML代码。使用Django提供的mark_safe函数将结果标记为模板中呈现的安全HTML。

📌t默认情况下,Django不会信任任何HTML代码,并且会在将其放入输出之前进行转义。唯一的例外是那些被标记为可安全转义的变量。

现在,在帖子列表和详细信息模板中加载模板标记模块。

在blog/post/list.html和blog/post/detail.html模板的顶部{% extends %}标签之后添加以下一行:

{% load blog_tags %}

编辑 post/detail.html模版
{ { post.body|linebreaks }}
替换为
{ { post.body|markdown }}

编辑post/list.html 模版
{ { post.body|truncatewords:30|linebreaks }}
替换为
{ { post.body|markdown|truncatewords_html:30 }}

📌truncatewords_html过滤器在一定数量的单词之后截断字符串,避免未关闭的HTML标记。

有关自定义过滤器更多信息,请查看如何编写自定义的模板标签和过滤器 | Django 文档 | Django (djangoproject.com)

相关推荐

  1. Django模版过滤器Markdown

    2024-01-11 00:14:01       38 阅读
  2. Django大回顾-4 自定义过滤器和标签、模型

    2024-01-11 00:14:01       36 阅读
  3. 设计模式过滤器模式

    2024-01-11 00:14:01       35 阅读
  4. 过滤器模式(极简c++)》

    2024-01-11 00:14:01       21 阅读
  5. CSDN 新手markdown模板,画图用

    2024-01-11 00:14:01       20 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-11 00:14:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-11 00:14:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-11 00:14:01       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-11 00:14:01       20 阅读

热门阅读

  1. Hadoop之mapreduce参数大全-1

    2024-01-11 00:14:01       31 阅读
  2. 在React和Vue中实现锚点定位功能

    2024-01-11 00:14:01       34 阅读
  3. linux socket网络编程基础知识

    2024-01-11 00:14:01       32 阅读
  4. Spring05

    Spring05

    2024-01-11 00:14:01      24 阅读
  5. C++ 智能指针

    2024-01-11 00:14:01       29 阅读
  6. spring-boot-admin-server-ui 打包备忘

    2024-01-11 00:14:01       28 阅读
  7. MySQL 系统表

    2024-01-11 00:14:01       35 阅读
  8. 自动驾驶记忆泊车功能规范

    2024-01-11 00:14:01       33 阅读
  9. 多层感知机(Multilayer Perceptron,MLP)

    2024-01-11 00:14:01       40 阅读
  10. C++处方管理系统架构——设计模式应用场景分析

    2024-01-11 00:14:01       33 阅读
  11. Redis面试题7

    2024-01-11 00:14:01       32 阅读
  12. 将一个独立的磁盘添加到已有的 `/` 分区

    2024-01-11 00:14:01       35 阅读