[PYTHON] [Django] J'ai essayé d'implémenter des restrictions d'accès par héritage de classe.

Préface

Veuillez pardonner l'erreur car elle est écrite par un débutant avec un mémo. Je crée une application de chat, mais je veux m'assurer que seuls les participants de la salle peuvent voir la salle de discussion. J'ai passé beaucoup de temps à essayer de l'implémenter en remplaçant les méthodes dans la vue de classe Il y avait un moyen incroyablement simple, alors je vais le présenter.

Sujet principal

models.py



class Room(models.Model):
     (Abréviation)

class User(AbstractBaseUser, PermissionsMixin):
     (Abréviation)

class JoinRoom(models.Model):#Table intermédiaire
    room = models.ForeignKey(Room,on_delete=models.CASCADE)
    user = models.ForeignKey(User,on_delete=models.PROTECT)

Il n'est peut-être pas préférable de l'écrire ici, mais je vais le résumer ici par souci de clarté. Il semble que get soit plus rapide que d'utiliser un filtre, alors je le fais.

views.py



from django.contrib.auth.mixins import UserPassesTestMixin

class OnlyParticipantMixin(UserPassesTestMixin):
    raise_exception = True

    def test_func(self):
        try:
            exist_or_not = MyRoom.objects.get(room=self.kwargs['pk'],user=self.request.user)#Je n'ai pas encore essayé si j'ai besoin de remplacer.
            return True
        except MyRoom.DoesNotExist:
            return False

class CommentCreateView(OnlyParticipantMixin,generic.CreateView):#Cela ne fonctionne pas à moins que ce soit dans cet ordre?
     template_name = 'hogehoge/hogehoge'

C'est ça. Si quelqu'un d'autre que le participant essaie de regarder, une erreur se produit.

référence

https://developer.yukimonkey.com/article/20200417/

https://intellectual-curiosity.tokyo/2018/12/06/django%E3%81%AE%E8%A9%B3%E7%B4%B0%E7%94%BB%E9%9D%A2detailview%E3%81%A7%E8%87%AA%E5%88%86%E4%BB%A5%E5%A4%96%E3%81%AE%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AB%E3%82%A2%E3%82%AF/

Recommended Posts

[Django] J'ai essayé d'implémenter des restrictions d'accès par héritage de classe.
J'ai essayé d'implémenter PCANet
J'ai essayé d'implémenter StarGAN (1)
J'ai essayé d'implémenter Deep VQE
J'ai essayé d'implémenter la détection d'anomalies par apprentissage de structure clairsemée
J'ai essayé de mettre en place une validation contradictoire
J'ai essayé d'implémenter Realness GAN
Django super introduction par les débutants Python! Partie 6 J'ai essayé d'implémenter la fonction de connexion
J'ai essayé d'implémenter la classification des phrases par Self Attention avec PyTorch
J'ai essayé d'implémenter PLSA en Python
J'ai essayé d'implémenter Autoencoder avec TensorFlow
J'ai essayé d'implémenter la permutation en Python
J'ai essayé d'implémenter PLSA dans Python 2
J'ai essayé d'implémenter ADALINE en Python
J'ai essayé d'implémenter PPO en Python
J'ai essayé d'implémenter CVAE avec PyTorch
J'ai essayé Django
J'ai essayé d'implémenter la régression linéaire bayésienne par échantillonnage de Gibbs en python
J'ai essayé de programmer la bulle de tri par langue
J'ai essayé d'implémenter la lecture de Dataset avec PyTorch
Django super introduction par les débutants Python! Partie 3 J'ai essayé d'utiliser la fonction d'héritage de fichier de modèle
J'ai essayé d'implémenter TOPIC MODEL en Python
J'ai essayé d'implémenter le tri sélectif en python
J'ai essayé de classer les boules de dragon par adaline
[Introduction au PID] J'ai essayé de contrôler et de jouer ♬
J'ai essayé de mettre en œuvre le problème du voyageur de commerce
J'ai essayé d'implémenter la classification des phrases et la visualisation de l'attention par le japonais BERT avec PyTorch
J'ai essayé de déboguer.
J'ai essayé de mettre en œuvre la gestion des processus statistiques multivariés (MSPC)
J'ai essayé d'implémenter et d'apprendre DCGAN avec PyTorch
J'ai essayé d'implémenter un pseudo pachislot en Python
J'ai essayé d'implémenter le poker de Drakue en Python
J'ai essayé d'implémenter le perceptron artificiel avec python
J'ai essayé d'implémenter GA (algorithme génétique) en Python
J'ai essayé d'implémenter Grad-CAM avec keras et tensorflow
J'ai essayé d'implémenter SSD avec PyTorch maintenant (Dataset)
J'ai essayé d'accéder aux feuilles de calcul Google en utilisant Python
J'ai essayé d'implémenter le calcul automatique de la preuve de séquence
[Introduction] J'ai essayé de l'implémenter moi-même tout en expliquant l'arbre de dichotomie
[Introduction] J'ai essayé de l'implémenter moi-même tout en expliquant pour comprendre la dichotomie
J'ai essayé d'implémenter une ligne moyenne mobile de volume avec Quantx
J'ai essayé de mettre en œuvre le modèle de base du réseau neuronal récurrent
J'ai essayé d'apprendre PredNet
J'ai essayé d'implémenter un automate cellulaire unidimensionnel en Python
J'ai essayé d'organiser SVM.
J'ai essayé de mettre en œuvre une évasion (type d'évitement de tromperie) avec Quantx
J'ai essayé d'accélérer la création vidéo en traitant en parallèle
[Introduction à la simulation] J'ai essayé de jouer en simulant une infection corona ♬
[Introduction à Pandas] J'ai essayé d'augmenter les données d'échange par interpolation de données ♬
J'ai essayé de commencer avec Hy ・ Définir une classe
J'ai essayé de classer MNIST par GNN (avec PyTorch géométrique)
J'ai essayé de réintroduire Linux
J'ai essayé d'implémenter ListNet d'apprentissage de rang avec Chainer
J'ai essayé d'implémenter la fonction d'envoi de courrier en Python
J'ai essayé de présenter Pylint
J'ai essayé de mettre en œuvre le chapeau de regroupement de Harry Potter avec CNN