IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Django Python Discussion :

Comment surcharger les vues DJango ?


Sujet :

Django Python

  1. #1
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2011
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2011
    Messages : 257
    Points : 76
    Points
    76
    Par défaut Comment surcharger les vues DJango ?
    Bonjour,

    je développe une application Django et j'ai mis en place une app d'authentification (registration) après avoir suivi l'excellent tuto "simple is better than complex" mais j'ai un peu de mal de mal à comprendre le fonctionnement de l'héritage dans Django

    j'ai donc mon projet myproject et son fichier urls.py dans lequel j'ai déclaré le système d'authentification du moteur Django :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    path('registration/', include('django.contrib.auth.urls')),
    en suivant le tutoriel, j'avais également ajouté les 2 vues login et logout dans le fichier registration/views.py mais je me rend compte que cela ne sert à rien puisque j'utilise les vues et templates par défaut de Django contenu dans le dossier de mon environnement virtuel env\Lib\site-packages\django\contrib\auth

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    from . import views
    from django.contrib.auth import views as auth_views # non utilisé du coup...?
     
     
    app_name='registration'
    urlpatterns = [
        path('login/', views.login, name='login'),
        path('logout/', views.logout, name='logout'),
    ]
    donc tout fonctionne correctement et Django est vraiment 'cool' pour sa simplicité mais j'aimerais ajouter des comportements personnalisés au login/logout et j'ai donc besoin de surcharger les vues et templates SANS changer le comportement par défaut et mieux comprendre le fonctionnement DJango du même coup.
    Par exemple, j'aimerais empêcher l'affichage de la page de login lorsque l'utilisateur est déjà connecté et qu'il clique sur la flèche retour arrière du navigateur juste après s'être authentifié.
    Il faut que j'utilise l'option 'redirect_authenticated_user' je pense donc que je modifie l'url

    Et c'est là que malgré mes lectures de la doc Django je suis un peu perdu.
    Je cherche un exemple simple de surcharge des urls, vue et template Login par exemple pour commencer...

    d'avance merci pour votre aide,

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Citation Envoyé par OZ1977 Voir le message
    Par exemple, j'aimerais empêcher l'affichage de la page de login lorsque l'utilisateur est déjà connecté et qu'il clique sur la flèche retour arrière du navigateur juste après s'être authentifié.
    Ce qui se passe alors est sous le contrôle du navigateur et Django n'y peut rien sauf à modifier les actions que le navigateur dans ce cas là (et c'est spécifique à chaque navigateur).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2011
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2011
    Messages : 257
    Points : 76
    Points
    76
    Par défaut
    Salut

    je crois que l'on peut gérer ce cas dans Django en utilisant l'option redirect_authenticated_user sur la vue
    mais visiblement, ce comportement n'est pas défni par défaut dans les vues Django auth

    il faut donc que je surcharge la vue login pour ajouter ce comportement

    mais sinon tu as raison, c'est navigateur par navigateur et la gestion des F5 et retour arrière reste un casse tête...

  4. #4
    Membre régulier
    Homme Profil pro
    growth hacker
    Inscrit en
    Novembre 2018
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : growth hacker
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2018
    Messages : 182
    Points : 116
    Points
    116
    Par défaut
    avant de parler de surcharger il faut avant essayer d'écrire un code correct par exemple vous avez écrit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    from . import views
    from django.contrib.auth import views as auth_views
    alors il faut écrire
    a
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    pp_name='registration'
    urlpatterns = [
        path('login/', auth_views.login, name='login'),
        path('logout/', auth_views.logout, name='logout'),
    ]
    Et il y a un très grand manque dans votre code

Discussions similaires

  1. [3.1] Surcharger les vues FosUserBundle 2.0
    Par loustalet dans le forum Symfony
    Réponses: 3
    Dernier message: 17/10/2016, 18h27
  2. [2014] Comment lister les Vues et les PS plus utilisés ?
    Par olivtone dans le forum Administration
    Réponses: 3
    Dernier message: 26/01/2016, 11h50
  3. Réponses: 17
    Dernier message: 03/12/2015, 04h48
  4. RCP: Comment disposer les vues dans une perspective
    Par idefixx dans le forum Eclipse Platform
    Réponses: 4
    Dernier message: 02/02/2012, 17h30
  5. Réponses: 2
    Dernier message: 24/04/2008, 17h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo