wake-up-neo.com

Basisvorlage für Django-Projekte

Kann ich eine Basisvorlage für mein Projekt erstellen, auf die alle Apps zugreifen können? Oder muss ich für jede App eine Basisvorlage erstellen? Und wenn ich wollte, dass sie gleich sind, würde ich sie einfach kopieren.

38
heri0n

Sicher kannst du. Ein schnelles Beispiel für eine base.html

<!DOCTYPE html>
<html>
    <head>
        <title>My Project</title>
    </head>

    <body>
    {% block content %}{% endblock content %}
    </body>
</html>

Und sagen Sie, Sie haben eine App namens myapp mit einer view.html-Seite,

{% extends "base.html" %}

{% block content %}
    <h2>Content for My App</h2>
    <p>Stuff etc etc.</p>
{% endblock content %}

Nehmen Sie sich etwas Zeit, um lesen Sie die Dokumente für weitere Informationen

61
Kenny Shen

Ja, das kannst du absolut machen. Verwenden Sie extends- und include-Vorlagen-Tags in Ihren Django-Vorlagen.

Ich fange an, Django zu lernen und habe dies kürzlich herausgefunden. Mein Code befindet sich unter Github Wenn Sie daran interessiert sind, wie ich Django-Vorlagen strukturiere, um von einem base.html und dann include allgemeinem Material wie Navbar und Kopfzeile, Fußzeile usw. zu erben.

6
redDragonzz

In der letzten Antwort gibt es einige Probleme und hier ist das richtige; Sie müssen Base.html so haben:

{% load staticfiles %}

<!DOCTYPE html>
<html>
<head>
    <title>My Project</title>
</head>
<body>
{% block content %}{% endblock %}
</body>
</html>

und auch für index.html

{% extend "appname/base.html" %}
{% block content %}
     <h1>test</h1>
{% endblock %}
6
Mohammad.Gh

Ja, Sie können eine Basisvorlage für Ihr Projekt erstellen, die von anderen Apps erweitert wird. Überprüfen Sie @Kenny_Shen Sie die Antwort.

Ich wollte nur zwei Notizen hinzufügen, wenn Sie sich Gedanken über die Isolation der App machen.

  1. Wenn Sie nicht möchten, dass sich Ihre App auf die Benennungskonvention "base.html" stützt, können Sie den tatsächlichen Namen mit einer Variablen einfügen. Sehen Sie sich Folgendes an: Wie verwende ich die Django-Vorlage für erweiterte Variablen? für Details,

  2. Möglicherweise möchten Sie dem App-Vorlagenblock einen anderen Namen geben, nicht "Inhalt", um Kollisionen mit anderen Apps zu vermeiden.

0
gmagno