Une histoire que je voulais faire une fonction comme before_action utilisée dans les rails avec django [Débutant apprend python avec un livre de référence]

introduction

Utilisation de Takashi Otaka, "Apprendre en bougeant! Introduction au développement Python Django" Je suis un débutant qui a commencé à apprendre python et Django. J'étudie la programmation depuis environ 4 mois en utilisant ruby / rails, Quand j'ai changé de travail en tant qu'ingénieur, j'ai décidé d'utiliser python, alors j'ai commencé à étudier avec ce livre d'une main. Puisque je suis un amateur de première classe, je vous serais très reconnaissant si vous pouviez commenter les suppléments et les suggestions.

Aperçu

Comme le before_action que j'ai utilisé pour créer l'application rails, Insérez un processus fixe avant la vue générale spécifiée. Je voulais aussi faire ça avec django.

En particulier,,,, Vérifiez si la session a une valeur spécifique avant d'afficher le modèle dans la vue générique basée sur la classe. → Oui: affichage tel quel → Aucun: rediriger vers l'écran d'index Je veux le traiter.

Considération

Si vous pouvez confirmer que vous êtes connecté avec @login_required, Peut-être que je peux faire quelque chose de similaire ...? Non, ça ne peut pas être fait. ↓ Apparemment, "@ ~" est un décorateur. Et après tout, il semble que vous puissiez créer le vôtre.

Décrivez le traitement que vous souhaitez effectuer en commun.

Cette fois, "s'il y a une valeur spécifique dans la session".

def is_hoge_in_session(func):
    def hoge_checker(request):
        if 'hoge' in request.session:
            return func(request)
        else:
            return redirect("hogeApp:index")
    return hoge_checker

Concernant le contenu du code, je me demande si les explications des grands ancêtres sont faciles à comprendre. ・ [Python] Explication des décorateurs pour les débutantsComment utiliser Decorator dans Django et comment le créer

Placez-le simplement au-dessus de la vue de la classe cible.

# method_Décorateur d'importation
from django.utils.decorators import method_decorator

、、、(Omission)、、、

@method_decorator(is_hoge_in_session, name='dispatch')
class HogeFugaView(LoginRequiredMixin, generic.ListView):
、、、(Ce qui suit est omis)

À propos, concernant la gestion des décorateurs de fonctions dans la vue basée sur les classes Nous avons reçu la sagesse du site suivant. [Django] Comment utiliser les décorateurs de fonctions dans les vues basées sur les classes

Ce résumé

Le temps qui a été jeté dans la colombe → 2 heures Impressions: → Même si vous êtes débutant, même si vous n'avez pas de senior spécialiste de la langue que vous développez Très bien, j'ai un professeur Google. Le reste est enthousiaste.

Excellent article de référence

Recommended Posts

Une histoire que je voulais faire une fonction comme before_action utilisée dans les rails avec django [Débutant apprend python avec un livre de référence]
Une histoire dont je voulais afficher le résultat de la division (%) sur HTML avec une application utilisant django [Débutant apprend python avec un livre de référence dans une main]
Une histoire que je ne savais pas charger de mixin lors de la création d'une façade avec l'application django [Débutant apprend python avec un livre de référence]
Une histoire qui n'a pas fonctionné lorsque j'ai essayé de me connecter avec le module de requêtes Python
order_by ('-created_at') ← Qu'est-ce que "ー"? ?? ?? [Le débutant apprend le python avec un livre de référence]
Une histoire à laquelle j'étais accro après la communication SFTP avec python
Je veux travailler avec un robot en python.
Une histoire qui nécessitait des préparatifs pour essayer de faire un tutoriel Django avec des centos simples
Je voulais créer une dll pour utiliser une fonction écrite en C à partir de Python dans ctypes, mais j'ai eu du mal
Une histoire qui a disparu quand j'ai spécifié un chemin commençant par tilda (~) en python open
J'ai fait un jeu de puzzle (comme) avec Tkinter of Python
J'ai aussi essayé d'imiter la fonction monade et la monade d'état avec le générateur en Python
Je souhaite utiliser un caractère générique que je souhaite décortiquer avec Python remove
[Road to Intermediate Python] Appelez une instance de classe comme une fonction avec __call__
[Python] Un mémo que j'ai essayé de démarrer avec asyncio
Je souhaite rechercher le texte intégral avec elasticsearch + python
J'ai écrit une fonction pour charger le script d'extension Git en Python
Je voulais résoudre le problème ABC164 A ~ D avec Python
Je veux améliorer l'efficacité avec Python même dans un système expérimental (3) Je veux faire quelque chose comme Excel avec Pandas
J'ai créé une application Web en Python qui convertit Markdown en HTML
C'est plus récent, mais je voulais essayer le calcul de l'IMC avec python.
J'ai essayé de développer un formateur qui génère des journaux Python en JSON
Je veux faire un patch monkey seulement en partie en toute sécurité avec Python
J'ai utilisé Python avec le minimum de connaissances nécessaires, mais j'ai acheté un livre de référence et étudié à nouveau pour résumer ce que j'ai appris de nouveau et ce que j'ai trouvé utile
Livre en spirale en Python! Python avec un livre en spirale! (Chapitre 14 ~)
Je voulais résoudre ABC160 avec Python
Je voulais résoudre ABC159 avec Python
Je voulais résoudre ABC172 avec Python
Je voulais créer rapidement un serveur de messagerie utilisable librement avec postfix + dovecot sur EC2
Je souhaite créer une API qui retourne un modèle avec une relation récursive dans Django REST Framework
Une histoire sur la conversion de HTML en PDF avec WeasyPrint + matplotlib et l'intégration de graphiques [Les débutants apprennent python avec un livre de référence]
J'ai essayé de créer une classe qui peut facilement sérialiser Json en Python
Une histoire déroutante avec deux façons d'implémenter XGBoost en Python + notes générales
Je souhaite créer une file d'attente prioritaire pouvant être mise à jour avec Python (2.7)
Une histoire qui est devenue bleu clair en 4 mois après avoir démarré AtCoder avec python
J'ai enregistré PyQCheck, une bibliothèque qui peut effectuer QuickCheck avec Python, dans PyPI.
[Débutant] Que se passe-t-il si j'écris un programme qui s'exécute sur php en Python?
Présentation du livre "Créer une IA rentable avec Python" qui vous permet d'apprendre l'apprentissage automatique dans le cours le plus court
Je veux faire le test de Dunnett en Python
Un mémo que j'ai écrit un tri rapide en Python
Je voulais résoudre NOMURA Contest 2020 avec Python
Je voulais installer Python 3.4.3 avec Homebrew + pyenv
Je veux écrire dans un fichier avec Python
[Mac] Je souhaite créer un serveur HTTP simple qui exécute CGI avec Python
Un débutant a essayé de colorier un dessin au trait avec un chainer. J'ai pu le faire.
J'ai essayé de créer une fonction pour juger si les principaux stocks du monde sont l'heure d'été avec python
Lors de l'écriture dans un fichier csv avec python, une histoire que j'ai fait une légère erreur et n'a pas respecté la date de livraison
Comment convertir / restaurer une chaîne avec [] en python
Je souhaite intégrer une variable dans une chaîne Python
Je veux facilement implémenter le délai d'expiration en python
J'ai fait un Twitter BOT avec GAE (python) (avec une référence)
Je veux faire la transition avec un bouton sur le ballon
Je veux écrire en Python! (2) Écrivons un test
J'ai essayé d'implémenter un pseudo pachislot en Python
Je veux échantillonner au hasard un fichier avec Python
J'étais accro au grattage avec Selenium (+ Python) en 2020