Dino Geek essaye de t'aider

Comment gérer les permissions dans Django?


Gérer les permissions dans Django est assez simple et peut être fait en utilisant le système d’authentification intégré de Django. Django fournit un mécanisme de permissions pour relier les actions de la vie réelle aux actions que les utilisateurs peuvent effectuer sur votre site web.

Pour gérer les permissions dans Django, vous pouvez utiliser l’un des modèles Django – `Group`, `User` ou `Permission`. Les permissions dans Django sont des booléens associés à des modèles spécifiques. Par exemple, `User` possède quatre types de permission : `add`, `change`, `delete`, et `view`.

Pour attribuer une permission à un utilisateur, vous pouvez modifier le modèle `User` :

```
from django.contrib.auth.models import Permission
from django.contrib.contenttypes.models import ContentType
from myapp.models import MyModel

  1. Créez une nouvelle permission
    content_type = ContentType.objects.get_for_model(MyModel)
    permission = Permission.objects.create( codename=‘can_view_mymodel’, name=‘Can view my model’, content_type=content_type,
    )
  1. Attribuez cette permission à un utilisateur
    user = User.objects.get(username=‘myusername’)
    user.user_permissions.add(permission)
    ```
    (Source : Documentation officielle de Django, https://docs.djangoproject.com/fr/3.2/topics/auth/default/#topic-authorization)

Une autre façon de gérer les permissions est d’utiliser des groupes. Vous pouvez créer un groupe, lui attribuer des permissions, puis ajouter des utilisateurs à ce groupe.

```
from django.contrib.auth.models import Group, Permission

  1. Créez un nouveau groupe
    new_group, created = Group.objects.get_or_create(name=‘new_group’)
  1. Attribuez une permission à ce groupe
    ct = ContentType.objects.get_for_model(MyModel)
    permission = Permission.objects.create(codename=‘can_change_mymodel’, name=‘Can change my model’, content_type=ct)
    new_group.permissions.add(permission)
  1. Ajoutez un utilisateur à ce groupe
    user = User.objects.get(username=‘myusername’)
    user.groups.add(new_group)
    ```
    (Source : Documentation officielle de Django, https://docs.djangoproject.com/fr/3.2/topics/auth/default/#django.contrib.auth.models.Group)

Enfin, vous pouvez vérifier si un utilisateur a une permission spécifique en utilisant la méthode `has_perm` :

```
user = User.objects.get(username=‘myusername’)
user.has_perm(‘myapp.change_mymodel’)
```
Ou pour vérifications multiples:
```
user.has_perms([‘myapp.change_mymodel’, ‘myapp.add_mymodel’])
```
(Source : Documentation officielle de Django, https://docs.djangoproject.com/fr/3.2/topics/auth/default/#django.contrib.auth.models.User.has\_perm)

Cela est utile pour vérifier les permissions dans votre vue avant d’autoriser l’utilisateur à effectuer une action. Vous pouvez également utiliser le décorateur `permission_required` pour exiger qu’un utilisateur ait une permission spécifique pour accéder à une vue.

Au-delà de cela, Django propose également un système de permissions objet par objet, qui peut être utilisé pour contrôler les permissions au niveau de l’objet individuel plutôt qu’au niveau du modèle.


Générez simplement des articles pour optimiser votre SEO
Générez simplement des articles pour optimiser votre SEO





DinoGeek propose des articles simples sur des technologies complexes

Vous souhaitez être cité dans cet article ? Rien de plus simple, contactez-nous à dino@eiki.fr

CSS | NodeJS | DNS | DMARC | MAPI | NNTP | htaccess | PHP | HTTPS | Drupal | WEB3 | LLM | Wordpress | TLD | Nom de Domaine | IMAP | TCP | NFT | MariaDB | FTP | Zigbee | NMAP | SNMP | SEO | E-Mail | LXC | HTTP | MangoDB | SFTP | RAG | SSH | HTML | ChatGPT API | OSPF | JavaScript | Docker | OpenVZ | ChatGPT | VPS | ZIMBRA | SPF | UDP | Joomla | IPV6 | BGP | Django | Reactjs | DKIM | VMWare | RSYNC | Python | TFTP | Webdav | FAAS | Apache | IPV4 | LDAP | POP3 | SMTP

| Whispers of love (API) | Déclaration d'Amour |






Mentions Légales / Conditions Générales d'Utilisation