2020年11月6日星期五

Django1.6自定义markdown过滤器

Markdown

1. 背景

  1. Django自1.6版本开始就取消了markdown这个标签;
  2. 之前用django-markdown-deux实现了Django1.6的Markdown功能,后来发现这货不支持直接输入HTML,会把所有的<>都转码,加上autoescape|safe都不好使。

于是就找到了自定义template tag这种形式,发现实现起来也很简单,使用时也非常趁手。

2. 实现步骤

2.1 创建Template Tags目录

在myproject/myapp目录下创建templatetags目录,并新建两个文件__init__.pydjangomarkdown.py,形成文件结构如下:

myproject/ myapp/  __init__.py  models.py  templatetags/   __init__.py   djangomarkdown.py  views.py
  • __init__.py照例是确保该目录作为Python包使用;
  • djangomarkdown.py是具体设置的脚本,但要注意这个文件命名是以后模板过滤器使用的,所以不要和已存在的或其他app的过滤器冲突。

2.2 编辑 djangomarkdown.py

djangomarkdown.py代码如下:

# -*- coding: utf-8 -*-import markdown2from django import templatefrom django.template.defaultfilters import stringfilterfrom django.utils.encoding import force_unicodefrom django.utils.safestring import mark_saferegister = template.Library()@register.filter(is_safe=True)@stringfilterdef djangomarkdown(value): return mark_safe(markdown2.markdown(force_unicode(value),          extras=["code-friendly"]          )      )

原文转载:http://www.shaoqun.com/a/489375.html

米谷:https://www.ikjzd.com/w/1788

stadium:https://www.ikjzd.com/w/2729

海淘贝:https://www.ikjzd.com/w/1726


1.背景Django自1.6版本开始就取消了markdown这个标签;之前用django-markdown-deux实现了Django1.6的Markdown功能,后来发现这货不支持直接输入HTML,会把所有的<>都转码,加上autoescape,|safe都不好使。于是就找到了自定义templatetag这种形式,发现实现起来也很简单,使用时也非常趁手。2.实现步骤2.1创建Temp
r标:https://www.ikjzd.com/w/1070
myshow:https://www.ikjzd.com/w/2235
2020东部华侨城灯光节持续多久?2020深圳东部华侨城灯:http://tour.shaoqun.com/a/32519.html
深圳野生动物园门票价格是多少?:http://tour.shaoqun.com/a/1266.html
冬季泡温泉要注意什么?:http://tour.shaoqun.com/a/3828.html

没有评论:

发表评论