数据库突破的Django模板"扩展"

时间:2015-09-18 22:52:22

标签: python django templates

所以我建立了这个Lander CMS系统。我希望能够构建动态模板:

function Person(name, family) {
    var aName = name;
    var aFamily = family;

    // define method within the constructor that has access to
    // local variables here
    this.getFull = function() {
        return aName + " " + aFamily;
    }
}

var p = new Person("Bob", "Smith");
console.log(p.getFull());    // "Bob Smith"
console.log(p.aName);        // undefined, not instance properties
console.log(p.aFamily);      // undefined, not instance properties

我有这个基本模板内容不变,它有几个参数" body"," styles"和" javascript":

class LanderTemplate(models.Model):
    name = models.CharField(max_length=255, null=False, blank=False)
    init_script = models.CharField(max_length=255, null=True, blank=True)
    body = models.TextField(null=True, blank=True)
    styles = models.TextField(null=True, blank=True)
    javascript = models.TextField(null=True, blank=True)

我有这个函数,它接受一个模板模型,将它变成kwargs,并生成一个django Template对象。

CONTENT_BASE = """
{% extends "base.html" %}
{% block body %}
{body}
{% endblock %}
{% block head_script %}
<style type="text/css">
{styles}
</style>
{% endblock %}
{% block post_script %}
<script>
{javascript}
</style>
{% endblock %}"""

当我尝试运行此操作时,出现以下错误:

  

/ landers / view /

中的KeyError      

&#39;%延伸&#34;基地&#39;

任何人都知道这里发生了什么?似乎Python from django.template import Template # Generate a lander template from the database def get_db_template(template): data = template.__dict__ content = CONTENT_BASE.format(**data) return Template(content) 试图将{%extends ...}解析为arg?

这是一个准确的假设吗?

1 个答案:

答案 0 :(得分:1)

是的,这是一个精确的假设...如果你想要一个文字,你需要使用{{ {...我认为......也许\{