Cours:Django et base de données
De GBLL, TAL, ALAO, etc.
Django est un framework python qui vous permet de rapidement créer un site web, une application web ou une API.
Pour installer Django et faire ses premier pas, jetez un œil à [Cours:Initiation_à_Django].
Dans ce tutoriel, nous allons utiliser la base de données native de Django. Nous allons créer une page Todo list, sur laquelle sera lister les items de notre todo list. Nous pourrons en ajouter et en supprimer depuis cette même page via une requête AJAX.
Todo list de base pour commencer :)
Création d'une page dédiée pour notre Todo list
1. Créer un template html pour notre page todo list. La balise ligne 1 permet d'injecter le contenu de cette page dans la page principale base.html que nous avons créée dans le tuto précédent. La balise ligne 2 permettra de charger le fichier javascript todolist.js, que nous n'avons pas encore créé. Pour l'instant, il n'y a qu'un titre sur la page, et une div "items" vide.
(todolist.html)
{% extends "base.html" %}
{% load static %}
{% block content %}
<h1>Ma todo list</h1>
<div id="items"></div>
{% endblock %}
{% block script %}
<script src="{% static 'scripts/todolist.js' %}"></script>
{% endblock %}
2. Créer une view pour afficher cette page dans views.py.
(view.py)
def todolist(request):
return render(request, 'todolist.html')
3. Ajouter une url pour pouvoir appeler cette view dans urls.py.
(urls.py)
urlpatterns = [
path('admin/', admin.site.urls),
path('', myApp.home),
path('variables/', myApp.variables),
path('spacy/', myApp.spacy),
path('analyze/', csrf_exempt(myApp.analyze)),
path('todolist/', myApp.todolist),
4. Vous pouvez éventuellement ajouter un lien dans votre barre de navigation dans base.html pour accéder facilement à cette nouvelle page.
(base.html)
...
<body>
<!-- NAVBAR -->
<nav class="navbar navbar-expand-lg navbar-dark bg-primary">
<div class="container-fluid">
<a class="navbar-brand" href="#">Navbar</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarColor01" aria-controls="navbarColor01" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarColor01">
<ul class="navbar-nav me-auto">
<li class="nav-item">
<a class="nav-link active" href="/">Accueil
<span class="visually-hidden">(current)</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/spacy/">Spacy</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/variables/">Variables</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/todolist/">Todo list</a>
</li>
</div>
</div>
</nav>
5. Vous pouvez maintenant afficher la page todolist (avec juste un titre qui s'affiche).
Créer une table Item dans la base de données
1. Voilà, c'est maintenant que ça commence vraiment. Chaque tables de votre base de données est définie dans le fichier models.py de votre application. Chaque table est une classe qui peut avoir des propriétés et des méthodes. Ici on va se limiter à juste 3 ou 4 tables avec quelques propriétés. Commençons par créer une table Item. Chaque item que nous créerons ensuite sera une instance de la classe Item, et aura donc les mêmes propriétés. Faisons basique pour l'instant : chaque item aura un champs de titre et un champs de texte. On ajoutera d'autres propriétés plus tard.
(models.py)
from django.db import models
class Item(models.Model):
titre = models.CharField(max_length=50)
texte = models.TextField()
2. Il faut maintenant mettre à jour la base de données, comme à chaque fois que nous modifierons le fichier models.py. Pour cela, deux commandes à retenir (stopper le serveur pour pouvoir les exécuter) :
- python manage.py makemigrations
: pour préparer la mise à jour
- python manage.py migrate
: pour effectuer la mise à jour
3.