To begin with, you will want to create a lib folder in your App Engine project's home directory.
~/Projects/Example$ mkdir lib
You will then want to download Textile and extract into your newly created lib folder.
~/Projects/Example$ cd lib
~/Projects/Example/lib$ curl -O http://pypi.python.org/packages/source/t/textile/textile-2.1.2.tar.gz
~/Projects/Example/lib$ tar xzf textile-2.1.2.tar.gz
The Django template library django.contrib.markup will attempt to import from the namespace textile. You need to let Python know to look inside directories in the lib directory for namespaces. To do this, you will need to modify your sys.path to include those directories. The way to do this is to add the following code to the top of the file or files that contain your main functions, such as main.py in some of the App Engine demos.
import os
import sys
import logging
DIR_PATH = os.path.abspath(os.path.dirname(os.path.realpath(__file__)))
LIB_PATH = os.path.join(DIR_PATH, "lib")
EXTRA_PATHS = []
for path in os.listdir(LIB_PATH):
fullpath = os.path.join(LIB_PATH, path)
if os.path.isdir(fullpath) and not path.startswith("."):
EXTRA_PATHS.append(fullpath)
sys.path = sys.path + EXTRA_PATHS
This will modify the sys.path and let Python know to look inside of your lib directory for namespaces to import.
Now that Textile is installed, you need to register the necessary Django template library with App Engine. To do this, you need to make the following call in your code before rendering a template. I put this call in my base controller, as the first line of my get and post functions.
def get(self):
template.register_template_library('django.contrib.markup.templatetags.markup')
# Do your template processing here.
At this point, you should be able to use the textile template tag in App Engine templates like so.
<span>{{someVar|textile}}</span>