6👍
✅
If you’re using Django, you could try safe markdown:
{% load markup %}
{{ foo|markdown:"safe" }}
You’ll need to have markdown installed, and django.contrib.markup
in your settings.py
apps.
If you want to sanitize HTML on save, I’ve had good luck using feedparser’s sanitize (http://www.feedparser.org/).
import feedparser
body = feedparser._sanitizeHTML(body, 'utf8')
2👍
If you are looking for a textile solution: the PyTextile that django markup uses actually has a textile_restricted() function, which for some reason, never made it into django.contrib.markup. You can use this function to provide restricted textile. Either by adding a method to your model that calls textile_restricted, or use a custom template tag textile_restricted
, defined by the following code:
from django import template
from django.conf import settings
from django.utils.encoding import smart_str, force_unicode
from django.utils.safestring import mark_safe
register = template.Library()
def textile_restricted(value):
try:
import textile
except ImportError:
if settings.DEBUG:
raise template.TemplateSyntaxError("Error in {% textile %} filter: The Python textile library isn't installed.")
return force_unicode(value)
else:
return mark_safe(force_unicode(textile.textile_restricted(smart_str(value))))
textile_restricted.is_safe = True
register.filter(textile_restricted)
- [Django]-Django – Redirect user to "next" parameter after successful login
- [Django]-What is a distributed messaging system? Specifically what is 'distributed' in it?
- [Django]-How to filter generic foreign keys?
- [Django]-Django Verbose Name & Translations
- [Django]-Redirect to "next" after python-social-auth login
- [Django]-Django: Long field (BigIntegerField) For MongoDB
- [Django]-Unable to use curl to get a token with Django OAuth Toolkit
- [Django]-Django: environment variable for SECRET_KEY not working
- [Django]-Maximum recursion depth exceeded on logout(request)
Source:stackexchange.com