DJANGO_VIEWS

Cet article est une continuité de l’article DJANGO_MODELS et traite des VUES sous DJANGO .

Alors nous avions traité dans l’article DJANGO_MODELS , toutes les fonctionnalités nécessaires pour l’application  gérant l’école XALEYI .

Nous allons à présent définir les vues qui sont nécessaires pour le traitement des requêtes  clients .

Nous rappelons brièvement notre problématique.

Concevoir un petit logiciel qui répond aux fonctionnalités basiques d’un logiciel de  gestion d’une école .

1. Permettre de lister tous les étudiants

2 .Permettre de lister tous les professeurs

3 .Pour chaque étudiant , lister l’ensemble de ses cours

4.Pour chaque professeur , lister l’ensemble de ses cours , ainsi

que les étudiants qui suivent  ses cours .

5.Pour chaque étudiant  , lister l’ensemble de ses cours  ,ainsi

que  l’ensemble de ses cours du jours.

6.Pouvoir saisir un étudiant

7.Pouvoir saisir un Professeur

8.Pouvoir saisir un cour

1-Edition du fichier views.py

Éditer le fichier views.py créé  par django avec le code suivant .Ce  petit

bout de code intègre les fonctionnalités suivantes .

1.Saisir un étudiant  (add_etudiant)

2Saisir un professeur (add_professeur)

3.Editer un etudiant  (edit_etudiant )

4.Éditer un professeur (edit_professeur)

5.Lister  les étudiants  (index_etudiant)

6.Lister les professeurs  (index_professeur)

7.Accéder à tous les cours d’un étudiant (cour)

8.Accéder à tous les cours du jour d’un étudiant (cour_today)

Voici le code qui résulte de ce traitement .

————————————————

from django.http import HttpResponse
from xaleyi.models import Etudiants , Professeurs , Cours
from xaleyi.forms import EtudiantForm  , ProfesseurForm , CourForm
from django.shortcuts  import render_to_response , get_object_or_404
from datetime import datetime
# Create your views here.

# Affichons tous les etudiants de l'ecole 
def index_etudiant(req, tpl_name="etudiants/index.html"):

    """
    Show list  of  etudiants
    """
    all  = Etudiants.objects.all ()
    return   render_to_response (
    tpl_name , {"etudiants": all})
# Ajoutons un etudiant dans notre base de donnée
def add_etudiant (req ,tpl_name = "etudiants/add.html"):
    """
    Edit one etudiant
    """
    context ={}
    if req.method =="POST":
        form = EtudiantForm (req.POST)
        if form.is_valid ():
            form.save ()
            context ["status"] = "Object saved"

        else:
            context ["status"] = "Error when saving  object"
    context["form"] =EtudiantForm ()
    return  render_to_response (
         tpl_name  , context)
# Eidtons un etudiant  , et modifions le 
# a notre guise 
def edit_etudiant (req , pk , tpl_name  ="etudiants/edit.html" ):
    """
    Edit new etudiant
    """
    context = {}
    e = get_object_or_404 (Etudiant , pk)
    if request.method =="POST":
        form  = EtudiantForm (req.POST, e)
        if form.is_valid ():
            form.save()
            return HttpResponseRedirect ("../etudiants")

        else:
            context ["status"] ="Form is not valid"

    else:
        form = EtudiantForm (instance =e)

    return render_to_response (
        req , tpl_name  , context )

# Affichons la liste des cours du jour pour un etudiant 
# donné

def cours_today (req , pk  , tpl_name ="etudiants/cours.html"):
    """
    Show list of  cours for the current in this current day
    """
    context ={}
    e = Etudiants.objects.get (
    id= pk)
    cour_day  =None
    try:
        cour_day= e.cours
    except :cours_day ="Not cours  today "

    context ["e"] =e
    context ["cours"] = cour_day

    context ["status"] = "Empty" if not cour_day else ""
    return render_to_response  (
    tpl_name , context)

# Affichons la liste de tous les cours pour un
# etudiant donné

def cours (req, pk  , tpl_name ="etudiants/cours.html"):
    e= get_object_or_404 (Etudiants , pk =pk)
    context={}
    context["e"] =e
    context["cours"] =e.cours
    context["status"] ="Empty" if not e.cours  else ""
    return render_to_response (
    tpl_name , context)

# Supprimer un etudiant de cette ecole 
def delete_etudiant (req, pk , tpl_name ="etudiants/delete.html"):
    context ={}
    e = get_object_or_404 (Etudiant, pk =pk )
    if request.method =="POST":
        if request.POST["confirm_delete"]:
            e.delete ()
        return HttpResponseRedirect ("../../")

    context["etudiant"] =e
    return render_to_response (
    req , tpl_name  , context)

# Ajouter un professeur dans notre base de donnée 
def add_professeur (req, tpl_name ="professeurs/add.html"):
    context ={}
    if req.method =="POST":
        form = ProfesseurForm (req.POST, {
        "date_start":datetime.now () ,
        "date_end": datetime.now()

        })
        if form.is_valid ():
            form.save ()
            context ["status"] ="Saved"

        else: context ["status"] ="Not Saved"
    form  = ProfesseurForm ()
    context ["form"] = form
    return render_to_response (
    tpl_name  , context)

# Ajouter un cour dans notre base de donnée 
def add_cour  (req , tpl_name ="cours/add.html"):
    context={}
    if req.method =="POST":
        form = CourForm (req.POST)
        if form.is_valid ():
            form.save ()
            context["status"]="Saved"

        else: context ["status"] = "Not Saved"

    form =CourForm ()
    context ["form"] = form
    return render_to_response (
    tpl_name , context )

————————————————-

Dans un seul fichier , vous avez pu mettre tous les traitements necessaires à votre logiciel .DJANGO , etant basé sur PYTHON , qui est extremement puissant vous permet d’ecrire peu de code pour un traitment maxixum .

C’est là , toute l’élégance et la puissance de PYTHON .

get_object_or_404
Publicités

0 Responses to “DJANGO_VIEWS”



  1. Laisser un commentaire

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s





%d blogueurs aiment cette page :