Dynamische weergaven en sjablonen bouwen in Django

Django is een krachtig framework dat het eenvoudig maakt om dynamische webapplicaties te bouwen. In dit artikel onderzoeken we hoe u dynamische weergaven en sjablonen in Django bouwt, beginnend bij basisconcepten tot meer geavanceerde technieken. We bespreken hoe u gegevens van weergaven naar sjablonen doorgeeft en hoe u sjabloontags gebruikt om dynamisch content te genereren op basis van die gegevens.

Wat zijn weergaven in Django?

In Django is een view een Python-functie of een op een klasse gebaseerd component dat een webverzoek aanneemt en een webrespons retourneert. De respons kan een HTML-pagina, een JSON-object of een ander type content zijn. Met views kunt u dynamisch content genereren op basis van het verzoek van de gebruiker.

Een eenvoudig overzicht maken

Om een ​​view in Django te maken, moet u een functie definiëren in het views.py-bestand van uw Django-app. De functie ontvangt een HTTP-aanvraag en retourneert een HTTP-respons. Bijvoorbeeld:

from django.shortcuts import render

def home(request):
    return render(request, 'home.html')

Deze eenvoudige weergave rendert de "home.html"-sjabloon. Maar we kunnen dit dynamischer maken door gegevens van de weergave naar de sjabloon te sturen.

Gegevens doorgeven aan sjablonen

Om gegevens van een view naar een template te sturen, kunt u een dictionary gebruiken in het context-argument bij het aanroepen van de render-functie. Laten we bijvoorbeeld de "home" view aanpassen om een ​​dynamisch bericht naar de template te sturen:

def home(request):
    context = {
        'message': 'Welcome to my website!'
    }
    return render(request, 'home.html', context)

In de "home.html"-sjabloon hebt u nu toegang tot de variabele `message`:

<h1>{{ message }}</h1>

Hiermee wordt het bericht weergegeven dat is doorgegeven vanuit de weergave: "Welkom op mijn website!"

Sjabloontags gebruiken voor dynamische inhoud

Django-sjablonen ondersteunen krachtige sjabloontags die helpen dynamische content in uw HTML te genereren. Enkele veelvoorkomende sjabloontags zijn:

  • {% if %}... {% endif %} voor voorwaardelijke statements.
  • {% for %}... {% endfor %} voor het doorlopen van gegevens.
  • {{ variable }} voor het invoegen van dynamische waarden in HTML.

Een If-instructie gebruiken

Laten we een dynamisch bericht toevoegen dat alleen verschijnt als een bepaalde voorwaarde waar is. Wijzig de "home"-weergave om een ​​voorwaarde door te geven:

def home(request):
    context = {
        'message': 'Welcome to my website!',
        'user_logged_in': True
    }
    return render(request, 'home.html', context)

In de sjabloon kunt u een if-instructie gebruiken om een ​​welkomstbericht alleen weer te geven als de gebruiker is aangemeld:

{% if user_logged_in %}
    <p>You are logged in!</p>
{% else %}
    <p>Please log in to access more features.</p>
{% endif %}

Door gegevens heen lussen

Laten we nu een lijst met items doorgeven aan de template en ze weergeven met behulp van een for-lus. Wijzig eerst de weergave:

def home(request):
    context = {
        'message': 'Welcome to my website!',
        'items': ['Item 1', 'Item 2', 'Item 3']
    }
    return render(request, 'home.html', context)

Gebruik nu in de sjabloon de for-lus om elk item weer te geven:

<ul>
{% for item in items %}
    <li>{{ item }}</li>
{% endfor %}
</ul>

Hierdoor wordt een ongeordende lijst met items weergegeven: Item 1, Item 2 en Item 3.

Template-erfenis voor herbruikbare lay-outs

Met Django kunt u template-erfenis gebruiken om een ​​algemene lay-out te maken die op meerdere pagina's kan worden hergebruikt. Laten we bijvoorbeeld een basissjabloon maken die de structuur van uw HTML-pagina bevat:

<!-- base.html -->
<html>
    <head>
        <title>My Website</title>
    </head>
    <body>
        <header>
            <h1>My Website</h1>
        </header>
        
        <main>
            {% block content %}{% endblock %}
        </main>

        <footer>
            <p>Footer content here</p>
        </footer>
    </body>
</html>

Breid nu in uw "home.html"-sjabloon het basissjabloon uit en definieer het inhoudsblok:

<!-- home.html -->
{% extends 'base.html' %}

{% block content %}
    <h2>Welcome to the Home Page</h2>
    <p>This is the dynamic content of the home page.</p>
{% endblock %}

Wanneer het wordt weergegeven, wordt de "home.html"-inhoud ingevoegd in het {% block content %}{% endblock %}-gedeelte van de basissjabloon.

Conclusie

We hebben geleerd hoe je dynamische weergaven en sjablonen bouwt in Django. Door gegevens van weergaven door te geven aan sjablonen en de krachtige sjabloontags van Django te gebruiken, kun je rijke en interactieve webpagina's maken. Bovendien kun je met sjabloonovererving algemene lay-outs hergebruiken in je applicatie, waardoor je code beter te onderhouden is.

Met deze concepten op orde kunt u complexere Django-applicaties bouwen en de volledige kracht van het framework benutten.