【问题标题】:Extending Django Flatpages to accept template tags扩展 Django Flatpages 以接受模板标签
【发布时间】:2010-06-17 23:12:00
【问题描述】:

我在我们网站上的很多内容都使用 django flatpages,我想扩展它以接受内容中的 django 模板标签。

我找到了这个snippet,但在开玩笑之后我无法让它工作。我是否正确假设您需要“子类化” django flatpages 应用程序才能使其正常工作?这是最好的方法吗?我不太确定如何构建它,因为我真的不想直接修改 django 发行版。

【问题讨论】:

    标签: python django django-flatpages


    【解决方案1】:

    1. 一个简单的页面视图,它将通过为每个页面加载模板来呈现模板标签:

    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.另一种将平面页面存储在数据库中的方法是在您的模板中使用“模板评估标签”,例如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>
    

    【讨论】:

    • 嗨皮埃尔,问题是我在平面页面应用程序中有很多内容,但我经常希望能够包含 Django 标签并通过平面页面管理界面输入它们,我不想像我认为您的示例显示的那样将内容单独保存在模板中?我确实查看了您建议的模板评估标签,但我无法理解这将如何帮助我实现目标
    • 特里斯坦,我已经编辑了我的回复并添加了一个详细的模板。希望对您有所帮助。
    • 嗨 Pierre,通过您的示例,我更好地理解了评估标签的工作原理,这对我来说似乎是解决方案,感谢您花时间解释。据我了解,evaluate_tag 只会读取平面页面的输出并在该时间点处理相关标签。看起来很完美......
    【解决方案2】:

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

    【讨论】:

    • 嗨 Carles,这对我没有帮助,因为我通过平面页面管理界面输入和维护了很多文本,问题是我需要能够在其中输入 django 模板标签以及纯文本,并让它们呈现。
    猜你喜欢
    • 2011-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多