Construirea de vizualizări dinamice și șabloane în Django

Django este un cadru puternic care facilitează construirea de aplicații web dinamice. În acest articol, vom explora cum să construim vederi dinamice și șabloane în Django, pornind de la concepte de bază la tehnici mai avansate. Vom discuta cum să transmitem date de la vizualizări la șabloane și cum să folosiți etichete de șablon pentru a genera dinamic conținut pe baza acestor date.

Ce sunt vizualizările în Django?

În Django, o vizualizare este o funcție Python sau o componentă bazată pe clasă care preia o solicitare web și returnează un răspuns web. Răspunsul poate fi o pagină HTML, un obiect JSON sau orice alt tip de conținut. Vizualizările vă permit să generați în mod dinamic conținut pe baza solicitării utilizatorului.

Crearea unei vizualizări simple

Pentru a crea o vizualizare în Django, trebuie să definiți o funcție în fișierul views.py al aplicației dvs. Django. Funcția primește o solicitare HTTP și returnează un răspuns HTTP. De exemplu:

from django.shortcuts import render

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

Această vizualizare simplă redă șablonul "home.html". Dar putem face acest lucru mai dinamic prin transmiterea datelor din vizualizare în șablon.

Transmiterea datelor la șabloane

Pentru a transmite date dintr-o vizualizare la un șablon, puteți utiliza un dicționar în argumentul context atunci când apelați funcția de randare. De exemplu, să modificăm vizualizarea "home" pentru a transmite un mesaj dinamic șablonului:

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

Acum, în șablonul "home.html", puteți accesa variabila `mesaj`:

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

Aceasta va afișa mesajul transmis din vizualizare: „Bine ați venit pe site-ul meu!”

Utilizarea etichetelor șablon pentru conținut dinamic

Șabloanele Django acceptă etichete de șablon puternice care ajută la generarea de conținut dinamic în HTML. Câteva etichete de șablon comune sunt:

  • {% if %}... {% endif %} pentru instrucțiunile condiționate.
  • {% for %}... {% endfor %} pentru bucla peste date.
  • {{ variabilă }} pentru inserarea valorilor dinamice în HTML.

Folosind o instrucțiune If

Să adăugăm un mesaj dinamic care apare numai dacă o anumită condiție este adevărată. Modificați vizualizarea "home" pentru a trece o condiție:

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

În șablon, puteți utiliza o declarație if pentru a afișa un mesaj de bun venit numai dacă utilizatorul este autentificat:

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

Buclă prin date

Acum, să transmitem o listă de articole șablonului și să le afișăm folosind o buclă for. Mai întâi, modificați vizualizarea:

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

Acum, în șablon, utilizați bucla for pentru a afișa fiecare articol:

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

Aceasta va afișa o listă neordonată de articole: elementul 1, elementul 2 și elementul 3.

Moștenirea șabloanelor pentru aspecte reutilizabile

Django vă permite să utilizați moștenirea șablonului pentru a crea un aspect comun care poate fi reutilizat pe mai multe pagini. De exemplu, să creăm un șablon de bază care conține structura paginii HTML:

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

Acum, în șablonul "home.html", extindeți șablonul de bază și definiți blocul de conținut:

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

Când este redat, conținutul "home.html" va fi inserat în secțiunea {% block content %}{% endblock %} a șablonului de bază.

Concluzie

Am învățat cum să construim vizualizări dinamice și șabloane în Django. Prin transmiterea datelor de la vizualizări la șabloane și folosind etichetele puternice de șablon Django, puteți crea pagini web bogate și interactive. În plus, moștenirea șablonului vă permite să reutilizați machete comune în aplicația dvs., făcând codul mai ușor de întreținut.

Cu aceste concepte implementate, puteți începe să construiți aplicații Django mai complexe și să utilizați întreaga putere a cadrului.