4 Stimmen

Django Mehrfache Vererbung von Vorlagen

Mein Fall ist ganz einfach:

  • Ich habe eine Vorlage für Text/Plain-Mails: body.txt
  • Eine weitere für Text/HTML-E-Mails: body.html

Der Inhalt dieser beiden Mails ist derselbe, da ich EmailAlternative verwende, um beide in derselben Mail zu versenden.

body.txt :

{% block message %}{% endblock %}

{{ site_name }} team
-----------------
If you need help contact use at {{ support_mail }}

body.html :

<html>
    <head>
        <title>{% block title %}{% endblock %}</title>
    </head>
    <body>
        <p>{% filter linebreaksbr %}{% block message %}{% endblock %}{% endfilter %}</p>
        <p><strong>{{ site_name }} team</strong></p>
        <hr/>
        If you need help contact use at <a href="mailto:{{ support_mail }}">{{ support_mail }}</a>
    </body>
</html>

Natürlich ist es etwas komplexer mit Übersetzung, CSS und mehr als einem Block.

Mein Wunsch ist es, zu definieren einladung.txt :

{% block message %}Dear {{ first_name|title }} {{ last_name|upper }},

Your inscription has bee accepted. Welcome!
{% endblock %}

Ich möchte in der Lage sein, sowohl (body.txt, invitation.txt) als auch (body.html, invitation.txt) zu laden, um meine beiden html-Teile zu erhalten.

編集する:

So etwas in der Art:

einladung/body.txt :

{% extends body.txt invitation.txt %}

einladung/body.html :

{% extends body.html invitation.txt %}

7voto

furins Punkte 4884

Sie können verwenden einschließen.

z.B.: einladung.txt :

Dear {{ first_name|title }} {{ last_name|upper }},

Your inscription has bee accepted. Welcome!

einladung/body.txt :

{% extends body.txt %}
{% block message %}
{% include "invitation.txt" %}
{% endblock %}

einladung/body.html :

{% extends body.html %}
{% block message %}
{% include "invitation.txt" %}
{% endblock %}

6voto

benoitbb Punkte 108

Sie können eine Variable im Kontext setzen und sie an extends Vorlage-Tag.

In invitation.txt:

{% extends base %}
{% block message %}Dear {{ first_name|title }} {{ last_name|upper }},

Your inscription has been accepted. Welcome!
{% endblock %}

Rendering invitation.txt mit Kontext {'base': 'body.txt'} , dann mit Kontext {'base': 'body.html'} .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X