Ratkaistu: laajentaa kaksi base.html

Viimeisin päivitys: 09/18/2023

Verkkokehityksessä yksi tärkeimmistä elementeistä, jonka useimmat kehittäjät kohtaavat, on saman ulkoasun ja tuntuman esittäminen koko verkkosivustolla. Yksi tehokkaimmista tavoista saavuttaa tällainen johdonmukaisuus on käyttää perusmalleja tai base.html Djangossa, korkean tason Python-verkkokehyksessä, joka edistää nopeaa kehitystä. Drupal hyödyntää perinnön käsitettä parhaimmillaan ja tarjoaa mekanismin laajentaa perusmallit useisiin lapsimalleihin.

Kahden perusmallin laajentaminen voi olla hyödyllistä ratkaista ongelman, joka liittyy yhtenäiseen suunnitteluelementtiin koko verkkosivustolla. Perusmallit sisältävät HTML-runkorakenteen, joka pysyy vakiona koko verkkosovelluksessa. Alatason mallit sisältävät yksittäisten verkkosivujen sisällön, joka vaihtelee sivuittain. Nämä alimallipohjat perivät ominaisuudet ylätason perusmalleista käyttämällä mallipohjan periytymistä.

Perehdytään nyt ongelmaan liittyvän koodin vaiheittaiseen selostukseen.

Mallin perusmalli voidaan määritellä seuraavasti:

<!DOCTYPE html>
<html lang="en">
<head>
    {% block head %}
    <title>My Site</title>
    {% endblock %}
</head>
<body>
    {% block content %}
    {% endblock %}
</body>
</html>

Base.html voidaan sitten laajentaa alatason mallilla seuraavasti:

{% extends "base.html" %}

{% block head %}
    <title>My Page</title>
{% endblock %}

{% block content %}
    <h1>Welcome!</h1>
    <p>Here is your content...</p>
{% endblock %}

Kyse on yhden perusmallin laajentamisesta. Mutta entä jos sinulla on kaksi laajennettavaa perusmallia? Asiat ovat hieman hankalat, koska Python ei tue suoraan moniperintöä.

Kiertotapoja useille perusmalleille

Temppu piilee sisällön jakamisessa useisiin osiin tai lohkoihin. Alla on esimerkki siitä, kuinka voit laajentaa kahta perusmallia lohkojen avulla.

{% block content %}
    {% block content_one %}
    {% endblock %}

    {% block content_two %}
    {% endblock %}
{% endblock %}

Tässä perusmallin "sisältö" -lohko on jaettu edelleen kahteen muuhun lohkoon - "content_one" ja "content_two". Eri perusmallit voivat laajentaa näitä lohkoja.

Python Libray: Django

Mitä tulee verkkokehitykseen Pythonilla, Django on suosituin ja tehokkain Python Web Framework. Se noudattaa DRY (Don't Repeat Yourself) -periaatetta, joka edistää komponenttien uudelleenkäytettävyyttä. Django-mallipohjamoottori, osa Django-kehystä, on perus- mutta tehokas työkalu web-kehitykseen, jonka avulla voimme laajentaa Pythonin arvoa verkkoon.

Yhteenvetona voidaan todeta, että Djangossa on mahdollista laajentaa kahta perusmallia, vaikka kehys ei suoraan tue moniperintöä. Tärkeintä on segmentoida sisältö useisiin lohkoihin, joita erilaiset perusmallit voivat laajentaa. Tämä on tehokkain ratkaisu ongelmaan ja tuo malleihisi uudelleenkäytettävyyden, mikä tekee koodistasi tehokkaamman ja hallittavamman.

Huomautus: Django-mallinnuskone käyttää kieltä nimeltä Django Template Language (DTL), joka lainaa osan syntaksistaan ​​Pythonista, mutta se ei ole Python-koodia.

Related viestiä: