2010-06-17 67 views
6

我在我们的网站上使用了django的大量内容,我想扩展它以接受内容中的django模板标签。扩展Django的页面以接受模板标签

我发现这个snippet,但经过许多闲话我无法让它工作。我是否正确地认为你需要“子类化”django flatpages应用程序才能使其工作?这是做这件事的最好方式吗?我不太确定如何构建它,因为我不想直接修改django发行版。

回答

8

一个简单的页面视图至极将通过加载一个模板,每个页面呈现的模板标签:

url.py

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

my_app/views.py

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

2。存储在数据库中的平面页的另一种方法是t o在模板中使用“模板评估标签”,如this one

编辑你只需要修改flatpages template这样的:

<!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> 
+0

嗨皮埃尔, 问题是我有很多平板应用程序的内容,但我经常希望能够包括Django标签以及通过平板管理界面输入他们,我不想我认为您的示例显示了将内容单独保存在模板中? 我确实看了一下你建议的模板评估标签,但我很难理解这将如何帮助我实现目标 – 2010-06-18 19:42:58

+1

Tristan,我编辑了我的回复并添加了详细的模板。希望能帮助到你。 – 2010-06-18 22:15:50

+0

嗨皮埃尔,你的例子我更好地理解评估标签是如何工作的,而且看起来像是我的解决方案,感谢你抽出时间来解释。据我了解,evaluate_tag只是读取flatpage的输出,并在那个时间点处理相关标签。看起来很完美... – 2010-06-23 23:12:12

0

另一种方法可能是编写一个基于direct_to_template generic view的简单应用程序。

+0

嗨普约尔, 这不会帮助我,因为我有很多的进入和保持文本的通过扁平网页管理界面,问题是我需要能够在那里输入django模板标签以及纯文本,并让它们呈现。 – 2010-06-18 19:43:46