Extending Django Flatpages to accept template tags

2019-02-02 21:18发布

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.

2条回答
霸刀☆藐视天下
2楼-- · 2019-02-02 21:43

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>
查看更多
We Are One
3楼-- · 2019-02-02 21:56

An alternative approach could be to write a simple app based on the direct_to_template generic view.

查看更多
登录 后发表回答