This method lets you define your markup language and then processes your entries and puts the HTML output in another field on your database.
I came from a content management system that worked like this and to me it makes sense. Your system doesn't have to process your entry every time it has to display it. You would just call the "*_html" field in your template.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | MARKUP_LANG_CHOICES = (
('markdown', 'Markdown'),
('textile', 'Textile'),
('none', 'None'),
)
class Entry(models.Model):
markup_lang = models.CharField('Markup Language', maxlength=255, choices=MARKUP_LANG_CHOICES, default='markdown')
body = models.TextField(help_text='Use selected markup.')
body_html = models.TextField('Body as HTML', blank=True, null=True)
def save(self):
if self.markup_lang == 'markdown':
import markdown
self.body_html = markdown.markdown(self.body)
if self.markup_lang == 'textile':
import textile
self.body_html = textile.textile(self.body)
if self.markup_lang == 'none':
self.body_html = self.body
super(Entry, self).save()
|
More like this
- Add Toggle Switch Widget to Django Forms by OgliariNatan 2 weeks, 1 day ago
- get_object_or_none by azwdevops 4 months, 1 week ago
- Mask sensitive data from logger by agusmakmun 6 months ago
- Template tag - list punctuation for a list of items by shapiromatron 1 year, 8 months ago
- JSONRequestMiddleware adds a .json() method to your HttpRequests by cdcarter 1 year, 8 months ago
Comments
Please login first before commenting.