FAQ : l’interface d’administration¶
Je ne peux pas me connecter. Lorsque je saisis un nom d’utilisateur et un mot de passe valides, cela me renvoie toujours vers la même page de connexion, sans aucun message d’erreur.¶
Le cookie de connexion n’est pas défini correctement car le domaine du cookie envoyé par Django ne correspond pas au domaine du navigateur. Essayez de définir le réglage SESSION_COOKIE_DOMAIN
de sorte que le domaine corresponde à votre domaine. Par exemple, si vous utilisez l’adresse « https://www.example.com/admin/ » dans votre navigateur, définissez SESSION_COOKIE_DOMAIN = 'www.example.com'
.
Je n’arrive pas à me connecter. Quand je saisis un couple nom d’utilisateur/mot de passe valide, j’obtiens à nouveau la page de connexion avec l’erreur : « Saisissez un nom d’utilisateur et un mot de passe valides ».¶
Si vous êtes certain que votre nom d’utilisateur et votre mot de passe sont corrects, assurez-vous
que les attributs is_active
et is_staff
de votre compte sont définis à True. Le site d’administration permet uniquement l’accès aux utilisateurs qui ont ces deux champs définis à True.
Comment automatiquement définir la valeur d’un champ avec l’utilisateur qui a mis à jour l’objet en dernier dans l’interface d’administration ?¶
La classe ModelAdmin
offre des points d’extension vous permettant de transformer un objet lorsqu’il est enregistré, à partir des informations de la requête. En récupérant l’utilisateur actuel de la requête et en étendant la méthode save_model()
, vous pouvez mettre à jour un objet pour qu’il contienne l’utilisateur qui l’a modifié. Voir la documentation de ModelAdmin pour un exemple.
Comment limiter l’accès à l’interface d’administration afin que les objets ne puissent être modifiés que par leur créateur ?¶
La classe ModelAdmin
offre aussi des points d’extension permettant de contrôler la visibilité et la capacité d’édition des objets de l’interface d’administration. En utilisant la même astuce que pour l’extraction de l’utilisateur depuis une requête, get_queryset()
et has_change_permission()
peuvent être utilisés pour contrôler la visibilité et la capacité d’édition des objets dans l’interface d’administration.
Le CSS et les images de mon site d’administration s’affichent parfaitement avec le serveur de développement, mais plus quand j’utilise mod_wsgi.¶
Consultez service des fichiers de l’administration dans la documentation « Comment utiliser Django avec mod_wsgi ».
Mon « list_filter » contient un champ ManyToManyField, mais le filtre ne s’affiche pas.¶
Django ne se fatigue pas à afficher le résultat d’un filtre ManyToManyField
s’il ne contient aucun élément lié.
Par exemple, si votre list_filter
inclut sites et qu’il n’y a aucun site dans votre base de données, il n’affichera par le filtre « Site ». Dans ce cas, le filtrage par site est inutile.
Certains objets n’apparaissent pas dans l’interface d’administration.¶
L’incohérence du nombre de lignes peut être causée par l’absence de valeurs de clé étrangère ou par un champ de clé étrangère incorrectement défini avec null=False
. Si vous avez un enregistrement avec une ForeignKey
pointant sur un objet inexistant et que cette clé étrangère est incluse dans list_display
, l’enregistrement ne sera pas affiché dans la liste des objets de l’administration parce que le modèle Django déclare une contrainte d’intégrité non implémentée au niveau de la base de données.
Comment puis-je personnaliser les fonctionnalités de l’interface d’administration ?¶
Vous avez plusieurs options. Si vous souhaitez vous greffer au-dessus d’un formulaire d’ajout/édition généré automatiquement par Django, vous pouvez attacher n’importe quel module JavaScript à la page via le paramètre js de la classe Admin du modèle. Ce paramètre est une liste d’URL, de type chaîne de caractères, pointant sur les modules JavaScript qui seront inclus dans le formulaire d’administration via une balise <script>
.
Si vous souhaitez plus de flexibilité que ce qu’on peut faire en ajustant des formulaires auto-générés, vous êtes libre d’écrire des vues personnalisées pour l’administration. L’interface d’administration est elle-même basée sur Django et vous pouvez écrire des vues personnalisées qui se branchent sur le système d’authentification, vérifient les permissions et font tout ce qu’elles ont besoin de faire.
Si vous souhaitez modifier l’aspect de l’interface d’administration, lisez la question suivante.
Le site d’administration généré dynamiquement ne me plaît pas. Comment puis-je le modifier ?¶
De notre côté, nous l’apprécions, mais si ce n’est pas votre cas, vous pouvez modifier la présentation du site d’administration en éditant la feuille de style CSS ou les images associées. Le site est construit en utilisant du HTML sémantique et beaucoup de points d’ancrage CSS de sorte que tout changement que vous souhaitez apporter devrait être possible en modifiant la feuille de style.
Quels sont les navigateurs pris en charge par le site d’administration ?¶
Le site d’administration offre une expérience pleinement fonctionnelle avec les versions récentes des navigateurs modernes et respectueux des standards. Pour les ordinateurs de bureau, cela inclut Chrome, Edge, Firefox, Opera, Safari et d’autres encore.
Pour les appareils mobiles et les tablettes, le site d’administration fournit une interface adaptative pour les navigateurs respectueux des standards. Cela inclut la majorité des navigateurs à la fois pour Android et iOS.
En fonction de la prise en charge des fonctionnalités, des différences stylistiques mineures peuvent surgir entre les navigateurs. Celles-ci sont considérées comme des variations acceptables en terme de rendu.