diff options
-rw-r--r-- | notice/models.py | 3 | ||||
-rw-r--r-- | notice/templates/notice/list_notice.html | 3 | ||||
-rw-r--r-- | notice/templatetags/__init__.py | 0 | ||||
-rw-r--r-- | notice/templatetags/my_markdown.py | 26 |
4 files changed, 30 insertions, 2 deletions
diff --git a/notice/models.py b/notice/models.py index e2b9533..63b17b2 100644 --- a/notice/models.py +++ b/notice/models.py @@ -15,7 +15,8 @@ class Notice(models.Model): pubtime = models.DateTimeField(_("Publish time"), auto_now_add=True) category = models.ForeignKey('NoticeCategory', verbose_name=_("Category")) is_important = models.BooleanField(_("Is important"), default=False) - contents = models.TextField(_("Contents")) + contents = models.TextField(_("Contents"), + help_text=_("Markdown syntax supported")) # NoticeAttachment to deal with attachments attachments = generic.GenericRelation('NoticeAttachment') diff --git a/notice/templates/notice/list_notice.html b/notice/templates/notice/list_notice.html index 14355f0..e0f2011 100644 --- a/notice/templates/notice/list_notice.html +++ b/notice/templates/notice/list_notice.html @@ -3,6 +3,7 @@ {% load url from future %} {% load i18n %} {% load bootstrap3 %} +{% load my_markdown %} {# template to show notice list #} @@ -24,7 +25,7 @@ <p>{{ notice.show_pubtime }}, {{ notice.category.category_name }}</p> </div> <div class="notice-content"> - {{ notice.contents }} + {{ notice.contents|my_markdown }} </div> {% if notice.attachments.all %} <div class="notice-attachment"> diff --git a/notice/templatetags/__init__.py b/notice/templatetags/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/notice/templatetags/__init__.py diff --git a/notice/templatetags/my_markdown.py b/notice/templatetags/my_markdown.py new file mode 100644 index 0000000..6b25146 --- /dev/null +++ b/notice/templatetags/my_markdown.py @@ -0,0 +1,26 @@ +# -*- coding: utf8 -*- + +""" +implement my own 'markdown' template tag +requires 'python-markdown' (pip install markdown) +""" +# ref: http://www.dominicrodger.com/django-markdown.html + +import markdown + +from django import template +from django.template.defaultfilters import stringfilter +from django.utils.encoding import force_unicode +from django.utils.safestring import mark_safe + +register = template.Library() + +@register.filter(is_safe=True) +@stringfilter +def my_markdown(value): + extensions = ["nl2br", ] + + return mark_safe(markdown.markdown(force_unicode(value), + extensions, + safe_mode=True, + enable_attributes=False)) |