Ontwikkel een goed begrip van de rollen en functies van projecten en apps binnen het Django-framework.
In Django kunt u twee primaire componenten gebruiken om een webtoepassing te maken; apps en projecten. Ontwikkelaars gebruiken deze termen soms door elkaar, hoewel ze verschillende betekenissen en functies hebben in het Django-webframework.
Django-projecten begrijpen
In Django is een project een container op het hoogste niveau voor uw webapplicatie. Een project bevat de configuraties voor uw webapplicatie en een of meer apps, die elk een specifieke set functionaliteiten of kenmerken voor uw webapplicatie bieden. Het bevat ook alle componenten die worden gedeeld tussen de verschillende apps. In een Django-project vindt u tools en hulpprogramma's waarmee u uw webtoepassing eenvoudig kunt beheren, zoals het Django-opdrachtregelprogramma en de Django-ontwikkelserver.
Onderdelen van een Django-project
Een Django-project bevat doorgaans verschillende apps en de configuraties van uw webapplicatie. Telkens wanneer u een nieuw project maakt, genereert Django automatisch bestanden met deze configuraties. De componenten in een Django-project zijn:
- Instellingen: De instellingenmodule bevat configuraties die nodig zijn voor uw project en de individuele apps in uw project. Deze module bevat voornamelijk configuratie-opties zoals de databaseverbinding, middleware, geïnstalleerde app, toegestane hosts en andere configuraties die nodig zijn om uw web-app te laten werken.
- URL's: De module URL's definieert een URL-patroon voor uw toepassing. Elk URL-patroon in uw project kan verwijzen naar een ander URL-patroon in uw app of rechtstreeks naar een weergavefunctie die het verzoek om de specifieke URL afhandelt. Of het URL-patroon nu wordt toegewezen aan een weergavefunctie of een ander URL-patroon in uw app, het uiteindelijke doel is om het toe te wijzen aan een weergave die het verzoek effectief afhandelt.
- WSGI: De WSGI-module (Web Server Gateway Interface) is de Python-standaard voor webservers en applicaties. De WSGI-module maakt het voor Django mogelijk om op verschillende servers te draaien.
- ASGI: De ASGI-module (Asynchronous Server Gateway Interface) behandelt asynchrone verzoeken zoals WebSockets-verbindingen. ASGI is een standaard voor asynchrone webservers om te communiceren met Python-webapplicaties.
- Overige onderdelen: Soms moet u uw eigen componenten aan uw Django-project toevoegen, afhankelijk van de vereisten van uw toepassing. Deze componenten omvatten statische bestanden, sjablonen, mediabestanden en aangepaste beheeropdrachten.
Hoe een Django-project te maken
Om een Django-project te maken, moet u de django-admin opdrachtregelprogramma. U kunt uw Django-project maken door deze stappen te volgen:
- Navigeer in uw opdrachtregelinterface naar de map waar u uw Django-project wilt maken.
- Installeer Django met de pip-pakketbeheerder.
pip installeer django
- Typ de volgende opdracht en voer deze uit:
django-admin startproject
De bovenstaande opdracht maakt een map zoals deze:
U zult een redundantie opmerken in de namen van uw projectdirectory, d.w.z. uw projectnaam verschijnt twee keer. Als u hier vanaf wilt, kunt u een periode toevoegen wanneer u uw startproject commando als volgt:
django-admin startproject .
Nu ziet uw projectstructuur er als volgt uit:
Met de bovenstaande stappen moet u met succes een Django-project hebben gemaakt. De beheren.py bestand dat in uw project is gemaakt, is belangrijk voor interactie met uw Django-project.
Een Django-app begrijpen
Het doel van een app is om uw Django-project te voorzien van specifieke functionaliteit. Een app helpt je bij het organiseren van je codebase door de functionaliteiten van je project op te splitsen in kleinere componenten.
In een blogproject heb je bijvoorbeeld een app voor authenticatie en autorisatie en een andere voor blogposts. U kunt meerdere apps maken op basis van de specifieke behoeften van uw project.
Onderdelen van een Django-app
Een Django-app bestaat uit modules die betrekking hebben op het project, d.w.z. op een specifiek kenmerk van uw website. Net als bij een project genereert Django automatisch nuttige bestanden wanneer u een app maakt. De door Django gegenereerde bestanden omvatten het volgende:
- weergaven.py: Dit bestand bevat alle logica die nodig is voor het ontvangen van verzoeken en het verzenden van antwoorden. Het bepaalt ook welke HTML-sjabloon moet worden weergegeven op basis van de acties van de gebruiker op uw website.
- modellen.py: Deze module bepaalt de gegevensstructuur van uw app en bepaalt hoe de database deze opslaat. Het gebruikt Django's ORM (Object-Relational Mapping) om de gegevens te definiëren. De modellencomponent definieert anders databaserelaties in Django.
- admin.py: De beheermodule definieert de beheerinterface van uw Django-app. U moet uw modellen registreren in het admin-bestand. Als je extra beheerfuncties nodig hebt die verder gaan dan die van Django, kun je in deze module aangepaste weergaven voor je beheerinterface definiëren.
- URL.py: Dit bestand definieert de URL-patronen of routes die uniek zijn voor een bepaalde Django-app. Soms genereert Django dit bestand niet automatisch. Als dit gebeurt, kunt u deze handmatig in uw app-map maken.
Django genereert enkele andere componenten, zoals apps.py En testen.py. Deze bestanden definiëren uw app-configuraties en laten u respectievelijk unit-tests schrijven.
Hoe een Django-app te maken
Voordat u een app maakt, moet u een project hebben gemaakt. Nadat u uw project hebt gemaakt, navigeert u naar de map met de beheren.py bestand en voer de volgende opdracht uit in uw terminal:
python manage.py startproject
De bovenstaande opdracht maakt een mapstructuur zoals deze in hetzelfde mapniveau als uw project:
Verschil tussen een app en een project in Django
Er zijn enkele duidelijke verschillen tussen een project en een app in Django. Sommigen van hen staan hieronder vermeld.
Herbruikbaarheid van code
In Django is een app een herbruikbaar onderdeel van je webapplicatie. Dit betekent dat als u een app heeft die de gebruikersauthenticatie voor het ene project afhandelt, u dezelfde app met weinig of geen wijzigingen in een ander project kunt hergebruiken. Een project daarentegen is niet herbruikbaar. Als u eenmaal een project voor een bepaalde webtoepassing hebt gemaakt, kunt u het niet voor een andere toepassing gebruiken.
Reikwijdte van de operatie
Een project werkt op een hoger niveau dan een app omdat het verantwoordelijk is voor de algehele configuratie en het beheer van uw website. Aan de andere kant is een app alleen verantwoordelijk voor een specifieke functie of functionaliteit van uw website.
Mappenstructuur
Het meest voor de hand liggende verschil tussen een app en een project is hun mapstructuur. Een project bevat doorgaans instellingen en andere configuratiebestanden die verantwoordelijk zijn voor het welzijn van uw website.
Een app volgt Django's MVT-architectuur. Het bevat alleen bestanden en configuraties die verantwoordelijk zijn voor het welzijn van een specifiek kenmerk van uw website.
Uw project en app werken samen om een goede webapplicatie te maken
Hoewel uw project en app uniek zijn, worden ze uiteindelijk gebruikt om u een naadloze ervaring te bieden bij het bouwen van uw applicatie. U zou zowel de project- als de app-componenten moeten kunnen combineren om uw webtoepassing te bouwen en aan te passen. Met uw app en project kunt u beginnen met het bouwen van uw website met Django.