2010-08-28 10:40:17 +08:00
|
|
|
=====================
|
|
|
|
django.contrib.markup
|
|
|
|
=====================
|
|
|
|
|
|
|
|
.. module:: django.contrib.markup
|
|
|
|
:synopsis: A collection of template filters that implement common markup languages.
|
|
|
|
|
2012-06-23 22:57:20 +08:00
|
|
|
.. deprecated:: 1.5
|
|
|
|
This module has been deprecated.
|
|
|
|
|
2010-08-28 10:40:17 +08:00
|
|
|
Django provides template filters that implement the following markup
|
|
|
|
languages:
|
|
|
|
|
2011-10-14 08:12:01 +08:00
|
|
|
* ``textile`` -- implements `Textile`_ -- requires `PyTextile`_
|
2012-04-14 20:35:31 +08:00
|
|
|
* ``markdown`` -- implements `Markdown`_ -- requires `Python-markdown`_ (>=2.1)
|
2011-10-14 08:12:01 +08:00
|
|
|
* ``restructuredtext`` -- implements `reST (reStructured Text)`_
|
|
|
|
-- requires `doc-utils`_
|
2010-08-28 10:40:17 +08:00
|
|
|
|
|
|
|
In each case, the filter expects formatted markup as a string and
|
|
|
|
returns a string representing the marked-up text. For example, the
|
|
|
|
``textile`` filter converts text that is marked-up in Textile format
|
|
|
|
to HTML.
|
|
|
|
|
|
|
|
To activate these filters, add ``'django.contrib.markup'`` to your
|
|
|
|
:setting:`INSTALLED_APPS` setting. Once you've done that, use
|
|
|
|
``{% load markup %}`` in a template, and you'll have access to these filters.
|
|
|
|
For more documentation, read the source code in
|
|
|
|
:file:`django/contrib/markup/templatetags/markup.py`.
|
|
|
|
|
2011-02-28 13:39:44 +08:00
|
|
|
.. warning::
|
|
|
|
|
|
|
|
The output of markup filters is marked "safe" and will not be escaped when
|
|
|
|
rendered in a template. Always be careful to sanitize your inputs and make
|
|
|
|
sure you are not leaving yourself vulnerable to cross-site scripting or
|
|
|
|
other types of attacks.
|
|
|
|
|
2010-08-28 10:40:17 +08:00
|
|
|
.. _Textile: http://en.wikipedia.org/wiki/Textile_%28markup_language%29
|
|
|
|
.. _Markdown: http://en.wikipedia.org/wiki/Markdown
|
2010-10-08 23:37:16 +08:00
|
|
|
.. _reST (reStructured Text): http://en.wikipedia.org/wiki/ReStructuredText
|
2010-08-28 10:40:17 +08:00
|
|
|
.. _PyTextile: http://loopcore.com/python-textile/
|
2012-03-02 03:32:48 +08:00
|
|
|
.. _Python-markdown: http://pypi.python.org/pypi/Markdown
|
2010-08-28 10:40:17 +08:00
|
|
|
.. _doc-utils: http://docutils.sf.net/
|
|
|
|
|
2010-10-08 23:37:16 +08:00
|
|
|
reStructured Text
|
2010-08-28 10:40:17 +08:00
|
|
|
-----------------
|
|
|
|
|
|
|
|
When using the ``restructuredtext`` markup filter you can define a
|
|
|
|
:setting:`RESTRUCTUREDTEXT_FILTER_SETTINGS` in your django settings to
|
|
|
|
override the default writer settings. See the `restructuredtext writer
|
|
|
|
settings`_ for details on what these settings are.
|
|
|
|
|
2012-04-19 23:00:55 +08:00
|
|
|
.. warning::
|
|
|
|
|
|
|
|
reStructured Text has features that allow raw HTML to be included, and that
|
|
|
|
allow arbitrary files to be included. These can lead to XSS vulnerabilities
|
|
|
|
and leaking of private information. It is your responsibility to check the
|
|
|
|
features of this library and configure appropriately to avoid this. See the
|
|
|
|
`Deploying Docutils Securely
|
|
|
|
<http://docutils.sourceforge.net/docs/howto/security.html>`_ documentation.
|
|
|
|
|
2010-08-28 10:40:17 +08:00
|
|
|
.. _restructuredtext writer settings: http://docutils.sourceforge.net/docs/user/config.html#html4css1-writer
|
2012-03-15 03:06:23 +08:00
|
|
|
|
|
|
|
Markdown
|
|
|
|
--------
|
|
|
|
|
|
|
|
The Python Markdown library supports options named "safe_mode" and
|
|
|
|
"enable_attributes". Both relate to the security of the output. To enable both
|
2012-04-14 20:35:31 +08:00
|
|
|
options in tandem, the markdown filter supports the "safe" argument::
|
2012-03-15 03:06:23 +08:00
|
|
|
|
|
|
|
{{ markdown_content_var|markdown:"safe" }}
|
|
|
|
|
|
|
|
.. warning::
|
|
|
|
|
|
|
|
Versions of the Python-Markdown library prior to 2.1 do not support the
|
2012-04-14 20:35:31 +08:00
|
|
|
optional disabling of attributes. This is a security flaw. Therefore,
|
|
|
|
``django.contrib.markup`` has dropped support for versions of
|
|
|
|
Python-Markdown < 2.1 in Django 1.5.
|