Django is a powerful, open-source, Python-gebaseerd webframework dat het proces van het maken en beheren van websites en webapps stroomlijnt. Django-applicaties zijn schaalbaar, krachtig en veilig. Het wordt ook geleverd met zeer goede documentatie over elk afzonderlijk deel van het framework.
In onze serie over Django, hebben we Django verkend door een voorbeeldwebsite met basisblogfuncties te implementeren. In deze handleiding doorlopen we de stappen voor het maken van een voorbeeldview voor onze Django-app.
Prerequisites
Om deze handleiding te volgen, heb je de volgende componenten nodig.
- Een Ubuntu server met de juiste configuraties. Lees meer over het instellen van een Ubuntu-server.
- Een correct geconfigureerde Python-ontwikkelomgeving.
- Een databaseserver, bijvoorbeeld MySQL. Deze handleiding gaat dieper in op het installeren en configureren van MySQL op een Ubuntu-server.
Deze handleiding is een vervolg op onze serie over Django. Eerst is het handig om de eerdere handleidingen te bekijken over het instellen van Django, het tot stand brengen van een Django-databaseverbinding, het maken van modellen, en het inschakelen van de Django Admin Interface.
In deze handleiding laten we zien hoe je Django-views maakt waarmee de webapp webrequests correct kan verwerken en de juiste respons kan retourneren. Zoals beschreven in de officiële documentatie van Django, kan een webrespons HTML-inhoud van een webpagina, een omleiding of een HTTP-fout zijn. Er is geen vaste plek om de view-functies op te slaan, zolang ze zich maar binnen de Python-paden bevinden. Er zijn echter populaire conventies voor het benoemen en plaatsen van de bestanden. Deze handleiding volgt die conventies.
Step 1. Activating the Virtual Environment
Django werkt het beste binnen een virtuele Python-omgeving. Onze Django-app sample_app is opgezet binnen een speciale virtuele omgeving. Activeer eerst de virtuele omgeving:
|
1 2 3 |
cd sample_app/ . sample_app_env/bin/activate |
Step 2. Creating View Functions
Navigeer naar onze random_app directory die de modellen voor onze blogwebsite bevat:
|
1 |
cd random_app/ |
Hier zal het bestand views.py de benodigde code bevatten voor het maken van onze views. Open het in een tekst-editor:
|
1 |
nano views.py |

We hebben de render() functie nodig uit de django.shortcuts bibliotheek, dus de eerste regel blijft hetzelfde. De render() functie helpt bij het combineren van zowel een template als een context om te worden geretourneerd als het juiste HttpResponse object.
De eerste view verwelkomt gebruikers die op de indexpagina terechtkomen. We moeten de functie HttpResponse() importeren uit de Django-bibliotheek http:
|
1 2 3 4 5 6 7 8 |
from django.shortcuts import render from django.http import HttpResponse def index(request): return HttpResponse(Je bent op de welkomstpagina beland') def individual_post(request): return HttpResponse('Individuele berichten zullen hier verschijnen') |

Sla het bestand op en sluit de editor.
Step 3. Mapping URLs to Views
Op dit moment is er geen URL toegewezen aan deze functies, dus ze zijn niet toegankelijk. We moeten nog een blok toevoegen urlpatterns binnen het URL-configuratiebestand. In Python wordt dit het URLconf (URL-configuratie)bestand genoemd.
Django moet bepalen welke root- URLconf module moet worden gebruikt. Vervolgens kijkt het in urlpatterns dat alle URL-patronen in een lijststructuur bevat. Django doorloopt vervolgens het bestand totdat het de eerste overeenkomst vindt. Zodra het een overeenkomst vindt, zoekt Django naar de bijbehorende view. Deze view-functie ontvangt gegevens die gerelateerd zijn aan het URL-patroon en een HttpRequest object. Een fout op elk willekeurig punt in dit proces zal leiden tot een omleiding naar een foutafhandelings-view.
Open het bestand urls.py van random_app in een tekst-editor:
|
1 |
nano urls.py |
Voer de volgende code in:
|
1 2 3 4 5 6 7 |
from django.urls import path from . import views urlpatterns = [ path('', views.index, name='index'), path('post/', views.individual_post, name='individual_post') ] |

Sla het bestand op en sluit de editor.
Zodra dit is gebeurd, moeten we ook het pad van het URL-bestand opnemen onder sample_app directory’s URLconf. Anders zal onze Django-app deze niet herkennen. Dit komt omdat de URLconf van sample_app is ingesteld als de ROOT_URLCONF in het instellingenbestand.
Navigeer naar de directory van onze app sample_app:
|
1 |
cd sample_app/sample_app/sample_app/ |
![]()
Open het bestand urls.py in een teksteditor:
|
1 |
nano urls.py |

Voer de volgende code in het bestand in:
|
1 2 3 4 5 6 7 |
from django.contrib import admin from django.urls import include, path urlpatterns = [ path('admin/', admin.site.urls), path('', include('random_app.urls')) ] |

Laten we onze wijzigingen testen. Start de Django-appserver op localhost:8000:
|
1 |
python manage.py runserver localhost:8000 |

Navigeer naar de URL:
|
1 |
localhost:8000 |

Controleer de URL voor het bericht:
|
1 |
localhost:8000/posts |
Stap 4. Een blogbericht maken
We hebben onze URL-patronen vastgesteld en hun workflows onderzocht. Het is tijd om een voorbeeld-blog toe te voegen en het resultaat te bekijken.
Navigeer vanuit het beheerderspaneel naar de random_app pagina:
|
1 |
localhost:8000/admin/random_app/ |

Klik op de +Toevoegen link van de Berichten rij:

Op de nieuwe webpagina wordt een formulier gepresenteerd dat bestaat uit de volgende velden.
- Titel: De titel van het blogbericht.
- Slug: Dit verwijst naar het deel van het geldige webadres met menselijk leesbare trefwoorden. Over het algemeen worden slugs gemaakt op basis van de titel van het bericht.
- Inhoud: De hoofdtekst van het blogbericht.
- Auteur: De relevante gebruikersnaam.
Klik op OPSLAAN om het bericht te verzenden:

Stap 5. De gegevens in de database weergeven
In dit volgende gedeelte gaan we met onze database aan de slag. Log in op MySQL als de speciale Django-gebruiker:
|
1 |
mysql -u sample_app_user -p |

Laten we controleren of ons bericht succesvol is geregistreerd in de database:
|
1 |
USE sample_app_data; |

|
1 |
SELECT * FROM random_app_post; |

Voila! Het bericht is succesvol geregistreerd! Je kunt de MySQL-shell nu afsluiten.
Stap 6. Extra aanpassingen aan de views
Er zijn nog een paar dingen die we met onze views kunnen doen. Open het bestand in een teksteditor:
|
1 |
nano views.py |
De code zou er zo uit moeten zien:
|
1 2 3 4 5 6 7 8 9 10 |
from django.shortcuts import render from django.http import HttpResponse from .models import Post def index(request): return HttpResponse('Hallo, welkom op de indexpagina.') def individual_post(request): recent_post = Post.objects.get(id__exact=1) return HttpResponse(recent_post.title + ': ' + recent_post.content) |

Hier hebben we een extra import statement voor Post . De geciteerde string van HttpResponse is ook vervangen door gegevens uit ons blogbericht. Om naar de gegevens te verwijzen, gebruiken we de ID van het blogbericht met het bijbehorende object. De ID wordt opgeslagen in een variabele recent_post. Nu kunnen we specifieke velden van het object extraheren door het veld achter te voegen met een punt als scheidingsteken.
Laten we na de wijziging de aanpassingen controleren. Start de Django-server:
|
1 |
python manage.py runserver localhost:8000 |

Ga nu naar de Berichten pagina:
|
1 |
localhost:8000/posts |

Het zou het blogbericht moeten tonen dat we hebben gemaakt.
Stap 7. Het project afsluiten
Om de Django-server af te sluiten, druk op Ctrl + C vanuit de terminal. Om de virtuele Python-omgeving te deactiveren, voer je de volgende opdracht uit:
|
1 |
deactivate |
Tot slot
In deze handleiding hebben we met succes gedemonstreerd hoe je views maakt, URL-patronen toewijst en teksten op een webpagina weergeeft vanuit de database van random_app in Django.Dit zijn fundamentele concepten van Django die essentieel zijn om te begrijpen en te beheersen.
Hier zijn meer bronnen om je te helpen bij het maken en beheren van Django-apps:
- Een Django-app maken met een databaseverbinding: een handleiding
- Een Django- en Gunicorn-applicatie bouwen met Docker op Ubuntu
- Een Django-applicatie beveiligen en schalen met Docker, Nginx en Let’s Encrypt
Veel computerplezier!

Reacties
Nog geen reacties. Wees de eerste.