Bygg dynamiske visninger og maler i Django

Django er et kraftig rammeverk som gjør det enkelt å bygge dynamiske webapplikasjoner. I denne artikkelen vil vi utforske hvordan du bygger dynamiske visninger og maler i Django, fra grunnleggende konsepter til mer avanserte teknikker. Vi vil dekke hvordan du overfører data fra visninger til maler og hvordan du bruker maltagger for å dynamisk generere innhold basert på disse dataene.

Hva er utsikten i Django?

I Django er en visning en Python-funksjon eller klassebasert komponent som tar en nettforespørsel og returnerer et nettsvar. Svaret kan være en HTML-side, et JSON-objekt eller annen type innhold. Visninger lar deg generere innhold dynamisk basert på brukerens forespørsel.

Opprette en enkel visning

For å opprette en visning i Django, må du definere en funksjon i views.py-filen til Django-appen din. Funksjonen mottar en HTTP-forespørsel og returnerer et HTTP-svar. For eksempel:

from django.shortcuts import render

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

Denne enkle visningen gjengir "home.html"-malen. Men vi kan gjøre dette mer dynamisk ved å overføre data fra visningen til malen.

Sende data til maler

For å overføre data fra en visning til en mal, kan du bruke en ordbok i kontekst-argumentet når du kaller gjengivelsesfunksjonen. La oss for eksempel endre "home"-visningen for å sende en dynamisk melding til malen:

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

Nå, i "home.html"-malen, kan du få tilgang til «melding»-variabelen:

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

Dette vil vise meldingen som ble sendt fra visningen: "Velkommen til nettstedet mitt!"

Bruke maletiketter for dynamisk innhold

Django-maler støtter kraftige mal-tagger som bidrar til å generere dynamisk innhold i HTML-en din. Noen vanlige maletiketter er:

  • {% if %}... {% endif %} for betingede utsagn.
  • {% for %}... {% endfor %} for looping over data.
  • {{ variabel }} for å sette inn dynamiske verdier i HTML.

Bruke en If-erklæring

La oss legge til en dynamisk melding som bare vises hvis en bestemt betingelse er sann. Endre "home"-visningen for å passere en betingelse:

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

I malen kan du bruke en if-erklæring for å vise en velkomstmelding bare hvis brukeren er logget inn:

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

Looping gjennom data

La oss nå sende en liste over elementer til malen og vise dem ved hjelp av en for-løkke. Først må du endre visningen:

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

Nå, i malen, bruk for-løkken for å vise hvert element:

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

Dette vil gjengi en uordnet liste over varer: Vare 1, Vare 2 og Vare 3.

Malarv for gjenbrukbare layouter

Django lar deg bruke malarv for å lage en felles layout som kan gjenbrukes på tvers av flere sider. La oss for eksempel lage en grunnmal som inneholder strukturen til HTML-siden din:

<!-- 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>

Nå, i "home.html"-malen din, utvider du basismalen og definer innholdsblokken:

<!-- 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 %}

Når det er gjengitt, vil "home.html"-innholdet settes inn i {% block content %}{% endblock %}-delen av grunnmalen.

Konklusjon

Vi lærte hvordan vi bygger dynamiske visninger og maler i Django. Ved å overføre data fra visninger til maler og bruke Djangos kraftige mal-tagger, kan du lage rike og interaktive nettsider. I tillegg lar malarv deg gjenbruke vanlige oppsett på tvers av applikasjonen din, noe som gjør koden mer vedlikeholdbar.

Med disse konseptene på plass kan du begynne å bygge mer komplekse Django-applikasjoner og utnytte rammeverkets fulle kraft.