Bibliothèque de tableau de bord | Comment créer une page de connexion avec Dash Library

Contenu

Cet article a été publié dans le cadre du Blogathon sur la science des données.

introduction

uth, et ils savent que cette méthode est une méthode de démarrage de session pop-up. Mais, Et si je veux une page de connexion comme celle que nous avons en HTML, JavaScript, PHP, etc.? Voici la réponse à votre question.

Ensuite, J'ai créé une application de tableau de bord pour l'authentification des utilisateurs à l'aide de dash-auth. Je voulais faire des opérations de test pour le même. Mais comme c'était une fenêtre pop-up, je n'ai pas pu obtenir l'identifiant, les noms des classes ou toute information liée qui pourrait être utilisée pour tester le module de connexion.

En outre, J'ai essayé d'appliquer certaines méthodes qui ont été données dans un article, mais toujours rien. Même après avoir cherché sur Internet pendant des heures, il n'y avait pas de réponse significative à ma question. C'est alors que j'ai su que je devais trouver un moyen de contourner ce problème.. Connaissez-vous dcc.Link () et j'ai pensé l'utiliser pour créer la page de connexion.

Ce blog contient la solution sur la façon de créer une vraie page de connexion qui ressemble à une page HTML et où vous pouvez passer d'une page à une autre à l'aide de liens.

Importation de bibliothèques:

Le premier est le premier, importer les bibliothèques nécessaires. Tout le monde devrait connaître ces.

tiret d'importation
importer dash_core_components en tant que dcc
importer dash_html_components au format html
à partir de dash.dependencies import,Saisir,État

Initialiser l'application Dash:

L'étape suivante consiste à initialiser l'application. tiret. tiret () appelle l'instance d'application.

app = tiret. tiret(__Nom__, external_stylesheets=external_stylesheets,suppress_callback_exceptions=Vrai)

Vous devez vous assurer que suppress_callback_exceptions est établi dans certain afin que vous puissiez parcourir différentes pages. Si vous ne le définissez pas sur vrai, des erreurs liées aux appels se produiront sûrement.

Concevoir:

Commençons par la conception.

app.layout = html.Div([
  dcc.Emplacement(id='url', rafraîchir=Faux),
  html.Div(id='page-content')
                     ])

Dcc.Location décide de la page actuelle à afficher. Représente la barre d'adresse dans le navigateur. Le div ci-dessous montre le contenu de l'URL spécifiée. Le nom du chemin sélectionné sera passé en paramètre à ce composant de localisation et, en conséquence, le contenu de la page sera affiché. Vous verrez cela dans une explication plus détaillée. La restriction d'actualisation consiste uniquement à actualiser la page lorsque l'emplacement est mis à jour ou non.

Page de connexion (page de indice):

Créons maintenant la page d'index qui contiendra les zones de saisie pour le nom d'utilisateur et le mot de passe et le bouton à cocher pour authentifier l'utilisateur. Ce sera la première page à apparaître.

index_page = html.Div([
html.Div(
dcc.Entrée(identifiant ="utilisateur", tapez="texte", espace réservé="Saisissez votre nom d'utilisateur",nom_classe="boîte de saisie1",
style={'margin-left':'35%','width':'450px','height':'45px','padding':'10px','margin-top':'60px',
'font-size':'16px','border-width':'3px','border-color':'#a0a3a2'
}),
),
html.Div(
dcc.Entrée(identifiant ="mot de passe", tapez="texte", espace réservé="Entrer le mot de passe",nom_classe="boîte de saisie2",
style={'margin-left':'35%','width':'450px','height':'45px','padding':'10px','margin-top':'10px',
'font-size':'16px','border-width':'3px','border-color':'#a0a3a2',
}),
),
html.Div(
html.Bouton('Vérifier', id='verify', n_clics=0, style={'border-width':'3px','font-size':'14px'}),
style={'margin-left':'45%','padding-top':'30px'}),
html.Div(id='output1')
])

@app.callback(
    tiret.dépendances.sortie('output1', 'enfants'),
   [tiret.dépendances.entrée('verify', 'n_clicks')],
    état=[État('utilisateur', 'value'),
                État('passw', 'value')])
def update_output(n_clics, ton nom, mot de passe):
    li ={'shraddha':'admin123'}
    si uname =='' ou uname == None ou passw =='' ou passw == None:
        renvoyer html. Div(children='',style={'padding-left':'550px','padding-top':'10px'})
    si uname pas en li:
        renvoyer html. Div(children='Nom d'utilisateur incorrect',style={'padding-left':'550px','padding-top':'40px','font-size':'16px'})
    si li[ton nom]==mot de passe:
        renvoyer html. Div(dcc.Link('Accès accordé'!', href="https://www.analyticsvidhya.com/page_suivante",style={'color':'#183d22','font-family': 'serif', 'font-weight': 'bold', "texte-décoration": "rien",'font-size':'20px'}),style={'padding-left':'605px','padding-top':'40px'})
autre:
    renvoyer html. Div(children='Mot de passe incorrect',style={'padding-left':'550px','padding-top':'40px','font-size':'16px'})

Le code ci-dessus crée 2 zones de saisie, le premier est pour le nom d'utilisateur et le second est pour le mot de passe. Contrairement à un bouton normal qui permet une seule zone de saisie, vous devez définir le ‘État’ dans une liste comme écrit ci-dessus pour prendre l'entrée de plusieurs zones de saisie, puis mettre à jour la sortie en cliquant sur le bouton (vérifier dans ce cas) .

En update_output, d'abord nous définissons un dictionnaire ‘au’ contenant tous les noms d'utilisateur valides et les mots de passe correspondants. La première condition ‘et’ c'est juste que rien n'est affiché au début.

Ensuite, nous vérifions si le nom d'utilisateur est invalide / valide, si le nom d'utilisateur est présent dans ‘au’, alors il est considéré comme valide, puis nous vérifions si le mot de passe est valide pour le nom d'utilisateur donné, et si les deux sont corrects, boom! Obtient un lien qui dit ‘Accès accordé’ et en cliquant sur le lien, vous pouvez accéder à la page requise.

Sur dcc.Link, le premier paramètre est le texte qui sera affiché comme lien et href est le ‘nom de la route’ que nous avons défini pour une page particulière. Nous verrons comment ces liens sont définis et comment les noms de routes sont attribués dans un instant.. Le reste de la partie est juste un formatage pour le rendre joli.

La page réelle:

Ceci est l'application principale du tableau de bord. Le code suivant est juste un code de script de base à des fins explicatives.

Code:

page_suivante = html.Div([
html.Div(dcc.Link('Log out', href="https://www.analyticsvidhya.com/",style={'color':'#bed4c4','font-family': 'serif', 'font-weight': 'bold', "texte-décoration": "rien",'font-size':'20px'}),style={'padding-left':'80%','padding-top':'10px'}),
        HTML. H1(enfants ="Ceci est la page suivante, la page principale",nom_classe="ap",style={
 'color':'#89b394','text-align':'center','justify':'center','padding-top':'170px','font-weight':'bold',
 'font-family':'courier',
 'padding-left':'1px'  })
]) 

Vous pouvez ajouter d'autres composants selon vos besoins. Comme tu peux le voir, he proporcionado un botónCerrar sesión’ en haut à droite de cette page qui vous ramènera à la page de connexion et vous déconnectera. Le lien est formaté de manière à ne pas ressembler à un lien bleu typique avec un soulignement, ce qui le rend décent.

J'ai essayé d'inclure le formatage maximum requis pour ne pas avoir à chercher ces petites modifications.

Définir les liens:

La dernière et la plus importante partie, qui s'occupera de toute la navigation, est de définir les itinéraires. Et voici comment faire.

Code:

@app.callback(tiret.dépendances.sortie('page-content', 'enfants'),
[tiret.dépendances.entrée('url', 'pathname')])
def display_page(chemin d'accès):
    si chemin d’accès == "https://www.analyticsvidhya.com/page_suivante":
        return next_page
else:
       index_page de retour

Vous devez définir les noms de chemin pour toutes les URL utilisées dans l'application. je pense que c'est explicite, renvoie la section respective pour votre chemin. Next_page est le composant Html div défini dans la section précédente.

Et bien sûr, courir application.

if __name__=='__main__':
    app.run_server() 

Lorsque vous exécutez l'application de tableau de bord, le conseil sera le prochain:

image1-1-8406271

Après une authentification réussie, obtendrá el enlace que diceAcceso otorgado’ comme vous pouvez le voir sur l'image ci-dessous.

image2-4080822

Et en cliquant sur ce lien, vous pouvez accéder à l'application depuis votre tableau de bord.

En outre, también puede agregar más funcionalidades como guardar el nombre de usuario y la contraseña para cada nuevo usuario agregado y almacenar estos detalles en la base de données. En utilisant des techniques de cryptage pour stocker le mot de passe dans une base de données et décrypter pour validation. Etc. Je vais également créer un blog à l'avenir pour cela. restez à l'écoute.

J'espère que ce blog explique ce que j'ai essayé de transmettre et maintenant vous pouvez également tester dans le module de connexion pour l'application de tableau de bord. Merci! A la prochaine!

Auteur:

Shraddha Shekhar

Je suis un étudiant en génie informatique et je suis curieux de connaître l'apprentissage automatique et la science des données. Si tu aimes ça, regarde mon autre blog.

Les médias présentés dans cet article ne sont pas la propriété de DataPeaker et sont utilisés à la discrétion de l'auteur.

Abonnez-vous à notre newsletter

Nous ne vous enverrons pas de courrier SPAM. Nous le détestons autant que vous.

Haut-parleur de données