Django mehrere Views in einem Template zusammenfassen

Django, Flask, Bottle, WSGI, CGI…
Antworten
Peter1977
User
Beiträge: 86
Registriert: Mittwoch 4. September 2013, 14:59

Hallo,

Suche gerade nach der möglichkeit ein Template für mehrere Views zu machen leider hat die Suche noch nicht konkretes ergeben.

Code: Alles auswählen

from django.shortcuts import render
from .forms import BezeichnungForm
from .forms import EinheitForm
from .forms import ToolartForm
from .forms import SteuerungForm
from .forms import AnlagenartForm
from .forms import AufnahmeForm

from .models import Bezeichnung
from .models import Einheit
from .models import Toolart
from .models import Steuerung
from .models import Anlagenart
from .models import Aufnahme

# Create your views here.
def bezeichnung(request):
    if request.method == "POST":
        form = BezeichnungForm(request.POST)
    else:
        form = BezeichnungForm()

    if form.is_valid():
        bezeichnung=form.save(commit=False)
        bezeichnung.save()
        
    bezeichnungen=Bezeichnung.objects.all().order_by('bezeichnung')
    

    return render(request, 'daten/bezeichnung.html', {'form': form,'bezeichnungen':bezeichnungen})


def einheit(request):
    if request.method == "POST":
        form = EinheitForm(request.POST)
    else:
        form = EinheitForm()

    if form.is_valid():
        einheit=form.save(commit=False)
        einheit.save()
        
    einheiten=Einheit.objects.all().order_by('einheit')
    return render(request, 'daten/einheit.html', {'form': form,'einheiten':einheiten})


def toolart(request):
    if request.method == "POST":
        form = ToolartForm(request.POST)
    else:
        form = ToolartForm()

    if form.is_valid():
        toolart=form.save(commit=False)
        toolart.save()
        
    toolarten=Toolart.objects.all().order_by('toolart')
    kopf="Daten ToolArt"
    return render(request, 'daten/toolart.html', {'form': form,'toolarten':toolarten,'kopf':kopf})


def steuerung(request):
    if request.method == "POST":
        form = SteuerungForm(request.POST)
    else:
        form = SteuerungForm()

    if form.is_valid():
        steuerung=form.save(commit=False)
        steuerung.save()
        
    steuerungen=Steuerung.objects.all().order_by('steuerung')
    return render(request, 'daten/steuerung.html', {'form': form,'steuerungen':steuerungen})


def anlagenart(request):
    if request.method == "POST":
        form = AnlagenartForm(request.POST)
    else:
        form = AnlagenartForm()

    if form.is_valid():
        anlagenart=form.save(commit=False)
        anlagenart.save()
        
    anlagenarten=Anlagenart.objects.all().order_by('anlagenart')
    return render(request, 'daten/anlagenart.html', {'form': form,'anlagenarten':anlagenarten})


def aufnahme(request):
    if request.method == "POST":
        form = AufnahmeForm(request.POST)
    else:
        form = AufnahmeForm()

    if form.is_valid():
        aufnahme=form.save(commit=False)
        aufnahme.save()
        
    aufnahmen=Aufnahme.objects.all().order_by('aufnahme')
    return render(request, 'daten/aufnahme.html', {'form': form,'aufnahmen':aufnahmen})

und ein Beispiel Template

Code: Alles auswählen

{% extends 'layout.html' %}
{% block kopfzeile %}
    {{ kopf }}
{% endblock %}

{% block fusszeile %}
    Wird die Fusszeile
{% endblock %}

{% block menuleiste %}
    {% include 'sidebarmenu.html'%}
{% endblock %}

{% block content %}

    
    <form method="POST" class="post-form">{% csrf_token %}
        {{ form.as_p }}
        <button type="submit" class="save btn btn-default">Save</button>
    </form>
    <p></p>
    <table>
        <thead>
            <tr>
                <th>
                    ID
                </th>
                <th>
                    Toolart
                </th>
            </tr>
        </thead>
        <tbody>
            {% for toolart in toolarten %}
                <tr>
                    <td>
                        {{ toolart.id }}
                    </td>
                    <td>
                        {{ toolart.toolart }}
                    </td>
                </tr>
            {%endfor%}
        </tbody>
    </table>
{% endblock %}
das was ich anpassen muss ist das zwischen <tbody></tbody>

Erste möglichkeit.
alles zwischen <tbody></tbody> wird in verschiedene Templates ausgelagert der rest in eine basis.html

Zweite möglichkeit
oder nur eine html Datei und nur für das Tabellen füllen wird Dynamisch geändert
Benutzeravatar
sparrow
User
Beiträge: 4198
Registriert: Freitag 17. April 2009, 10:28

Erste Möglichkeit.
Benutzeravatar
noisefloor
User
Beiträge: 3858
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

du kannst mit `extend` (siehe: https://docs.djangoproject.com/en/5.0/r ... #templates) Blöcke in andere Templates einbinden und im Template mit `include` (siehe: https://docs.djangoproject.com/en/5.0/r ... s/#include) andere Templates in ein Template laden.

Bei relativ simplen Views wie die, die du hast, lohnt sich IMHO ein Blick auf Class-Based Views, spart Tipparbeit, weil die fertigen Klassen das automatisch erledigen.

Gruß, noisefloor
Antworten