Dépot Copyright

 CopyrightFrance.com

Cours Python

  1. Introduction à Python
  2. Ide Python
  3. Premier programme Python
  4. Les variables en Python
  5. Les commentaires en Python
  6. Les opérateurs Python
  7. Les fonctions en Python
  8. Structure If else... Python
  9. For While Python
  10. Formatage des chaines Python
  11. Les listes en Python
  12. Les tuples en Python
  13. Les dictionnaires en Python
  14. Les ensembles en Python
  15. POO et classes en Python
  16. Héritage en Python
  17. Les exceptions en Python
  18. Le gestionnaire des packages pip
  19. Télécharger le cours complet
  20. Les modules en Python
  21. Le module OS
  22. Module datetime Python
  23. Le module Platform
  24. Le module virtualenv
  25. Le Module PyInstaller
  26. Les fichiers en Python
  27. Les fichiers ouverture & lecture
  28. Les fichiers ouverture & écriture
  29. Les fichiers CSV en Python
  30. Les Fichiers JSON En Python
  31. Fichier de configuration .ini
  32. Python & SQLite database
  33. DB Browser for SQLite
  34. Interface Graphique Tkinter
  35. Les Windgets Tkinter
  36. Bibliothèque d'images PILLOW
  37. Module de style tkinter.ttk
  38. Liste déroulante ttk Combobox
  39. le module filedialog
  40. Projet: Création éditeur de texte
  41. Bibliothèque graphique wxPython
  42. Bibliothèque graphique PyQt5
  43. Télécharger le cours complet
  44. Le module Math
  45. La bibliothèque matplotlib
  46. Le module Python statistics
  47. Bibliothèque Sympy
  48. Bibliothèques Numpy
  49. Bibliothèques Scipy
  50. Bibliothèques Pandas
  51. Bibliothèques Scikit Learn
  52. Bibliothèques TensorFlow
  53. Python Machine Learning
  54. Introduction à Django
  55. Installation de Django
  56. Premier Projet Django
  57. Interface administrateur
  58. Créer une application django
  59. Les modèles de django
  60. Templates Django
  61. Les formulaires Django
  62. Fichiers Statiques Django
  63. Exercices Python: les bases
  64. Exercices Python: les classes
  65. Exercices Python: les fichiers
  66. Tous les TP Python
  67. Création Editeur de Texte en Python Partie1
  68. Carnet d'adresse en Python
  69. Formation Python-partie1

Utilisateurs en ligne

Users: 7 Guests, 2 Bots

Annonces Google

1 – Modèle Formulaire django (ModelForm)

Supposons que nous ayons un modèle contenant divers champs, nous n’avons pas besoin de recoder les champs dans le fichier de formulaire html. Django le fait automatiquement pour nous afin de réduire le temps de développement des applications. Il s’agit d’une classe utilisée pour créer un formulaire HTML à l’aide du modèle. En plus le formulaire crée sera dynamique c.a.d permet d’insérer les données sur la base de données. C’est un moyen efficace de créer un formulaire sans écrire de code HTML. Pour cette raison, Django fournit la classe d’assistance ModelForm qui nous permet de créer une classe Formulaire à partir d’un modèle Django.

2 – Création d’un formulaire à l’aide de la classe ModelForm

Pour faire simple, nous allons créer un formulaire pour une petite application de gestion des étudiants contenant les champs suivants:

  • name
  • email
  • section

Avant de passer à la création d’un modèle, il faut au préalable enregistrer votre app:

Ajoutez votre app au fichier mysite/settings.py:

mysite/settings.py
INSTALLED_APPS = [
'myapp.apps.MyappConfig',
########,
########,
]

Exemple. Django ModelForm (gestion des étudiants)

1.) Créons le modèle via la classe au sein du fichier myapp/models.py:

myapp/models.py
from django.db import models
class Students(models.Model):
    name       =  models.CharField(max_length=25)
    email      =  models.EmailField(max_length=40)
	section    =  models.CharField(max_length=25)

    def __str__(self):  
        return self.name

Maintenant pour générer la table SQLite formée des champs: name, email et section, il faut effectuer les migrations nécessaires:

Pour cela exécuter en ligne de commande:

python manage.py makemigrations myapp

et ensuite :

python manage.py migrate

Nous allons voir ici comment générer un formulaire de saisie contenant les champ:

  • name
  • email
  • section

d’une façon automatique à l’aide de la classe ModelForm.

2.) Créons un fichier python nommé form.py au sein de l’application myapp et faisons l’import de la classe ModelForm depuis django.forms et la classe Students depuis myapp.models et créons ensuite une classe StudentsForm qui va servir pour générer  le formulaire html:

myapp/form.py
from django.forms import ModelForm
from myapp.models import Students

class StudentsForm(ModelForm):
    class Meta:
        model = Students
        fields = ['name' , 'email' , 'section']

Créons ensuite le views:

myapp/views.py
from django.shortcuts import render, redirect
from django.template import loader
from myapp.forms import studentsForm

from django.http import HttpResponse

def add_model(request):

    if request.method == "POST":
        form = studentsForm(request.POST)
        if form.is_valid():
            model_instance = form.save(commit=False)
            model_instance.save()
            return redirect('/myapp')
    else:
        form = studentsForm()
        return render(request, 'index.html', { 'form': form })

Configurons ensuite le fichier myapp/urls.py

myapp/urls.py
from django.contrib import admin
from django.urls import path
from myapp import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('myapp/', views.add_model),
]

Il nous reste maintenant à coder le fichier index.html du template:

template/index.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h2>Students management</h2>

<form method="POST" class="post−form">
{% csrf_token %}
{{ form.as_p }}
<button type="submit" class="save btn btn−default">Save</button>
</form>

</body>
</html>

Et maintenant si on tape l’adresse url de l’application: http://127.0.0.1:8000/myapp/ on obtient:

Remarque

Le formulaire ci-dessus est fonctionnelle, vous pouvez vérifier qu’il insère les données correctement au sein de la base de donnée.

3 – Affichage des données de la table Students

Pour afficher les données de la table myapp_students, il suffi t d’importer la classe Students depuis myapp.models:

from myapp.models import Students

et d’ajouter la valeur: Students.objects.all() au dictionnaire:

{ 'form': form , 'dataObject': Students.objects.all()} )

Code finale du views.py de  l’application:

from django.shortcuts import render, redirect
from django.template import loader
from myapp.forms import studentsForm
from myapp.models import Students
from django.http import HttpResponse

def add_model(request):

    if request.method == "POST":
        form = studentsForm(request.POST)
        if form.is_valid():
            model_instance = form.save(commit=False)
            model_instance.save()
            return redirect('/page1')
    else:
        form = studentsForm()
        return render(request, 'index.html', { 'form': form , 'dataObject': Students.objects.all()} )

Code finale du fichier index.html du template:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Students Management</title>
</head>
<body>
<h2>Students management</h2>

<form method="POST" class="post−form">
{% csrf_token %}
{{ form.as_p }}
<button type="submit" class="save btn btn−default">Save</button>
</form>

{% for stud in dataObject %}
Name   :  {{ stud.name }}<br />
Email  :  {{ stud.email }}<br />
Section:  {{ stud.section }}<br />
------------------------------<br />

{% endfor %}
</body>
</html>

Maintenant lancer le serveur et insérer queques données pour voir le résultat:

On peut aussi arranger les résultats sur une table HTML afin d’améliorer l’affichage:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Students Management</title>
</head>
<body>
<h2>Students management</h2>

<form method="POST" class="post−form">
{% csrf_token %}
{{ form.as_p }}
<button type="submit" class="save btn btn−default">Save</button>
</form>
<br />
<table border ='1' width="350">
    <tr><td bgcolor="#dddddd"><b>Name</td><td bgcolor="#dddddd"><b>Email</b></td><td bgcolor="#dddddd"><b>phone</b></td></tr>
{% for stud in dataObject %}
    <tr><td>{{ stud.name }}</td><td>{{ stud.email }}</td><td>{{ stud.phone }}</td></tr>
{% endfor %}
</table>

</body>
</html>

 

 

Younes Derfoufi
CRMEF OUJDA

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Time limit is exhausted. Please reload the CAPTCHA.