• 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 09/03/2022

Utilisez les fonctionnalités avancées des modèles et formulaires Django

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

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 de   QuizForm  . Vous vérifiez la présence de ce champ dans les données   POST  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 de  QuizForm  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 relations   ForeignKey  au modèle   Quiz  et au modèle   User  . Utiliser ce modèle pour stocker l’auteur du quiz.

    • Définir une   ForeignKey  nommée   author  qui lie le modèle   User  au modèle   Quiz  . Stocker l’auteur dans ce champ.

    • Définir un   ManyToManyField  nommé   author  qui lie le modèle   User  au modèle   Quiz  . Stocker l’auteur dans ce champ.

    • Définir un   OneToOneField  nommé   author  qui lie le modèle   User   au modèle  Quiz  . 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 groupe   moderators   . 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 groupe   moderators  . 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.