- 12 heures
- Moyenne
Ce cours est visible gratuitement en ligne.
course.header.alt.is_video
course.header.alt.is_certifying
J'ai tout compris !Mis à jour le 26/08/2024
Utilisez les fonctionnalités avancées des modèles et formulaires Django
Compétences évaluées
- Utiliser les fonctionnalités avancées des modèles et formulaires Django
Description
Les questions suivantes font référence au scénario ci-dessous :
Vous travaillez sur un site qui permet aux utilisateurs de partager des quiz avec leurs amis. Les quiz sont stockés dans un modèle Quiz
, qui se situe dans une application nommée quizzes
.
Question 1
On vous demande de construire une page permettant de créer plusieurs quiz en même temps. Les quiz sont créés avec un
ModelForm
nomméQuizForm
. Comment l’implémentez-vous ?Vous utilisez un
HiddenField
pour donner un champ unique à chaque instance deQuizForm
. Vous vérifiez la présence de ce champ dans les donnéesPOST
pour faire la différence entre les formulaires.Vous utilisez la méthode
modelformset_factory
pour créer un formset. Vous utilisez ce formset pour inclure plusieurs instances deQuizForm
sur la même page.Vous incluez plusieurs formulaires différents sous différentes balises
<form>
dans le gabarit. Lorsqu’un formulaire est envoyé, les données de tous les formulaires sont envoyées au serveur.
Question 2
Chaque quiz ne peut avoir qu’un auteur. Quelle est la façon la plus efficace de stocker ceci dans la base de données ?
Définir un nouveau modèle
QuizUser
qui a des relationsForeignKey
au modèleQuiz
et au modèleUser
. Utiliser ce modèle pour stocker l’auteur du quiz.Définir une
ForeignKey
nomméeauthor
qui lie le modèleUser
au modèleQuiz
. Stocker l’auteur dans ce champ.Définir un
ManyToManyField
nomméauthor
qui lie le modèleUser
au modèleQuiz
. Stocker l’auteur dans ce champ.Définir un
OneToOneField
nomméauthor
qui lie le modèleUser
au modèleQuiz
. Stocker l’auteur dans ce champ.
Question 3
On vous demande de donner aux modérateurs le pouvoir de désactiver les quiz, mais pas la capacité de les modifier ou de les supprimer. Comment implémentez-vous cela ?
Vous créez un
Group
nommémoderators
et vous lui attribuez les bons utilisateurs. Vous définissez une permission personnalisée,'quizzes.deactivate_quiz'
, et attribuez cette permission au groupemoderators
. Vous utilisez cette permission pour restreindre l’accès à la vue depuis laquelle les quiz peuvent être désactivés.Vous codez en dur une liste d’identifiants dans les paramètres, correspondants à ceux des modérateurs. Vous vérifiez si l’utilisateur connecté est sur cette liste dans la vue qui gère la désactivation des quiz et vous accordez l’accès de façon appropriée.
Vous créez un
Group
nommémoderators
et vous y attribuez des utilisateurs de façon appropriée. Vous attribuez la permission'quizzes.change_quiz'
au groupemoderators
. Dans la vue, vous vérifiez si l’utilisateur a la permission'quizzes.change_quiz'
. Si c’est le cas, donnez à l’utilisateur uniquement l’option de désactiver le quiz, et non de le modifier.
- Formations jusqu’à 100 % financées
- Date de début flexible
- Projets professionnalisants
- Mentorat individuel