Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Extending Django Flatpages to accept template tags

I use django flatpages for a lot of content on our site, I'd like to extend it to accept django template tags in the content as well.

I found this snippet but after much larking about I couldn't get it to work. Am I correct in assuming that you would need too "subclass" the django flatpages app to get this to work? Is this best way of doing it? I'm not quite sure how to structure it, as I don't really want to directly modify the django distribution.

like image 224
Tristan Brotherton Avatar asked Jun 17 '10 23:06

Tristan Brotherton


1 Answers

1. A simple page view wich will render template tags by loading a template for each page:

in url.py

url(r'^page/(?P<slug>.*)/$','my_app.views.page_detail', name='page_url'),

in my_app/views.py

def page_detail (request, slug):
    return render_to_response('page/' + slug + '.html', {},
                              context_instance=RequestContext(request))

2. Another method with flat pages stored in database, is to use a "template evaluation tag" in your template like this one.

edit You just have to modify flatpages template like this:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
    "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<head>
<title>{{ flatpage.title }}</title>
</head>
<body>
{% load evaluate_tag %} 
{% evaluate flatpage.content %} 
</body>
</html>
like image 73
Pierre-Jean Coudert Avatar answered Oct 19 '22 22:10

Pierre-Jean Coudert