2015-12-20 6 views
6

Sto eseguendo il tutorial sul flask e non riesco a far funzionare Template Inheritance. Di seguito sono gli esempi di mio codicetutorial Modelli di ereditarietà template

mio base.html è:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    {% block head %} 
    <link rel="stylesheet" href="style.css" /> 
    <title>{% block title %}{% endblock %} - My Webpage</title> 
    {% endblock %} 
</head> 
<body> 
    <div id="content">{% block content %}{% endblock %}</div> 
    <div id="footer"> 
     {% block footer %} 
     &copy; Copyright 2008 by <a href="http://domain.invalid/">you</a>. 
     {% endblock %} 
    </div> 
</body> 
</html> 

mio figlio è Temp:

{% extends "base.html" %} 
{% block title %}Index{% endblock %} 
{% block head %} 
    {{ super() }} 
    <style type="text/css"> 
     .important { color: #336699; } 
    </style> 
{% endblock %} 
{% block content %} 
    <h1>Index</h1> 
    <p class="important"> 
     Welcome to my awesome homepage. 
    </p> 
{% endblock %} 

mio script pallone è:

from flask import Flask, render_template 
app = Flask(__name__) 


@app.route('/') 
def home(): 
    return render_template("base.html") 

if __name__ == "__main__": 
    app.debug = True 
    app.run() 

C'è qualcosa in particolare dovrei fare riguardo a come sto incorporando il modello figlio? O dovrei rendere il modello di base in modo diverso?

risposta

7

Jinja extends funziona (superficialmente) come la sottoclasse di Python. Non si ottiene un'istanza di una sottoclasse quando si crea un'istanza di una classe genitore e non si ottiene il risultato di un modello secondario durante il rendering del modello di base. Rendi invece il modello figlio.

return render_template('child.html')