


Exemple détaillé d'enregistrement de l'état de connexion du compte utilisateur (python)
La naissance d'une application Web basée sur Flask est le sixième article. Cet article présente principalement le développement de la fonction d'enregistrement de l'état de connexion du compte utilisateur. Il a une certaine valeur de référence. Les amis intéressés peuvent se référer à
. avant Les fonctions de connexion et d'enregistrement sont terminées, mais après m'être connecté avec succès et être revenu à la page d'accueil, j'ai découvert qu'il s'agissait toujours d'une vaste étendue de blanc. Oui, le titre a toujours été écrit sur le blog, donc le but ultime est. pour écrire un blog léger, mais avant de publier l'article, est-ce correct ? Voulez-vous d'abord enregistrer le statut de connexion ?
Connexion utilisateur
Il existe de nombreuses façons d'enregistrer l'état de connexion. La première chose qui vient à l'esprit est d'utiliser la session fournie avec Flask, mais. flask fournit également une extension plus pratique, le package flask-login, qui peut être utilisé de la même manière qu'avant. Vous devez d'abord l'installer :
pip3.6 install flask-login
puis l'initialiser dans default.py :
from flask.ext.login import LoginManager ...... login_manager=LoginManager() login_manager.session_protection="strong" #可设置为None,basic,strong已提供不同的安全等级 login_manager.login_view="login" #设置登录页
Modifiez ensuite le modèle User en fonction des exigences, car Flask-Login nécessite que le modèle User implémente quatre méthodes, qui sont :
is_authenticated() Déterminez s'il faut vous connecter, vous connecter et renvoyer True, sinon renvoyer False
is_active() Si la connexion est autorisée, c'est-à-dire si l'utilisateur a été désactivé, s'il est désactivé, renvoyer False
is_anonymous() Falsepour les utilisateurs ordinaires
get_id() Renvoie l'identifiant unique de l'utilisateur, en utilisant l'encodage Unicode
Ces quatre méthodes peuvent être implémentées directement dans le modèle User , mais il existe un moyen plus simple, qui consiste à hériter de celui fourni par la classe Flask-Login UserMixin, qui contient l'implémentation par défaut de ces méthodes. Le modèle User modifié est :
from flask.ext.login import UserMixin class User(UserMixin,db.Model): __tablename__="users" id=db.Column(db.Integer,primary_key=True) ......
flask-login également. nécessite que le programme implémente une fonction de rappel, qui utilise l'identifiant spécifié pour accueillir l'utilisateur :
@login_manager.user_loader def load_user(user_id): return User.query.get(int(user_id))
Après cela, vous pouvez facilement utiliser le framework flask-login et continuer à modifier la partie navigation du modèle de page d'accueil pour afficher le nom d'utilisateur et les informations correspondantes :
{%extends "bootstrap/base.html "%} {% block title%}牛博客 {% endblock %}<!--覆盖title标签--> {% block navbar %} <nav class="navbar navbar-inverse"><!-- 导航部分 --> <p class="navbar-header"> <a class="navbar-brand" href="#" rel="external nofollow" rel="external nofollow" > 牛博客 </a> </p> <p class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> <ul class="nav navbar-nav"> <li><a href="/" rel="external nofollow" >首页</a></li> </ul> <ul class="nav navbar-nav navbar-right"> {% if current_user.is_authenticated %} <li><p class="navbar-text"><a href="#" rel="external nofollow" rel="external nofollow" class="navbar-link">{{current_user.username}}</a> 您好</p></li> <li><a href="{{url_for('logout')}}" rel="external nofollow" >登出</a></li> {% else %} <li><a href="{{url_for('login')}}" rel="external nofollow" >登录</a></li> {% endif %} </ul> </p><!-- /.navbar-collapse --> </nav> {% endblock %} {% block content %} <!--具体内容--> <p class="container"> </p> {% endblock %}
Le nouveau url_for apparaît ici Méthode, sa fonction principale est d'utiliser les informations du programme pour générer une URL, comme le nom de la méthode transmis dans la vue et générer l'URL correspondante. Vous pouvez également générer des paramètres d'URL via les paramètres dynamiques de la méthode, tels que url_for('index',age=5 )Le résultat est /?age=5
Le contenu principal est de déterminer s'il faut se connecter. Si vous êtes connecté, il affichera {{username}} bonjour et fournira la fonction de déconnexion. Sinon, le lien de connexion sera affiché.
Modifier le formulaire de connexion :
class LoginForm(Form): username=StringField("请输入用户名",validators=[DataRequired()]) password=PasswordField("请输入密码") remember_me=BooleanField("记住我") submit=SubmitField("登录")
Ajouter un élément Se souvenir de moi, BooleanField par défaut est un bouton de sélection multiple
Modifier la méthode d'affichage de connexion :
@app.route("/login",methods=["GET","POST"]) def login(): form=LoginForm() if form.validate_on_submit(): username = form.username.data password = form.password.data user = User.query.filter_by(username=username, password=password).first() if user is not None: login_user(user,form.remember_me.data) return redirect(url_for("index")) else: flash("您输入的用户名或密码错误") return render_template("/login.html",form=form) # 返回的仍为登录页 return render_template("/login.html",form=form)
Le login_user est fourni par le plug-in flask_login, qui est utilisé pour définir la connexion de l'utilisateur. Si True est saisi, l'état de stockage du cookie est fourni, sinon la fermeture de l'état du navigateur sera annulée. 🎜>
Nouveau Ajout d'une méthode de déconnexion :@app.route("/logout",methods=["GET","POST"]) @login_required def logout(): logout_user() return redirect(url_for("index"))
Conclusion du chapitre
La prochaine étape aurait dû être les fonctions de publication et de suivi, mais il est évident que le code est maintenant dans default.py, et je suis de plus en plus incapable de gérer la structure du code, la longueur de ce chapitre est donc relativement petite. Le chapitre suivant se concentrera sur la refactorisation du code existant et le regroupement des fonctions, puis continuera à écrire les fonctions suivantes. Merci d'avoir regardé.Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

PHP et Python ont leurs propres avantages et inconvénients, et le choix dépend des besoins du projet et des préférences personnelles. 1.Php convient au développement rapide et à la maintenance des applications Web à grande échelle. 2. Python domine le domaine de la science des données et de l'apprentissage automatique.

Activer l'accélération du GPU Pytorch sur le système CentOS nécessite l'installation de versions CUDA, CUDNN et GPU de Pytorch. Les étapes suivantes vous guideront tout au long du processus: CUDA et CUDNN Installation détermineront la compatibilité de la version CUDA: utilisez la commande NVIDIA-SMI pour afficher la version CUDA prise en charge par votre carte graphique NVIDIA. Par exemple, votre carte graphique MX450 peut prendre en charge CUDA11.1 ou plus. Téléchargez et installez Cudatoolkit: visitez le site officiel de Nvidiacudatoolkit et téléchargez et installez la version correspondante selon la version CUDA la plus élevée prise en charge par votre carte graphique. Installez la bibliothèque CUDNN:

Python et JavaScript ont leurs propres avantages et inconvénients en termes de communauté, de bibliothèques et de ressources. 1) La communauté Python est amicale et adaptée aux débutants, mais les ressources de développement frontal ne sont pas aussi riches que JavaScript. 2) Python est puissant dans les bibliothèques de science des données et d'apprentissage automatique, tandis que JavaScript est meilleur dans les bibliothèques et les cadres de développement frontaux. 3) Les deux ont des ressources d'apprentissage riches, mais Python convient pour commencer par des documents officiels, tandis que JavaScript est meilleur avec MDNWEBDOCS. Le choix doit être basé sur les besoins du projet et les intérêts personnels.

Docker utilise les fonctionnalités du noyau Linux pour fournir un environnement de fonctionnement d'application efficace et isolé. Son principe de travail est le suivant: 1. Le miroir est utilisé comme modèle en lecture seule, qui contient tout ce dont vous avez besoin pour exécuter l'application; 2. Le Système de fichiers Union (UnionFS) empile plusieurs systèmes de fichiers, ne stockant que les différences, l'économie d'espace et l'accélération; 3. Le démon gère les miroirs et les conteneurs, et le client les utilise pour l'interaction; 4. Les espaces de noms et les CGROUP implémentent l'isolement des conteneurs et les limitations de ressources; 5. Modes de réseau multiples prennent en charge l'interconnexion du conteneur. Ce n'est qu'en comprenant ces concepts principaux que vous pouvez mieux utiliser Docker.

Minio Object Storage: Déploiement haute performance dans le système Centos System Minio est un système de stockage d'objets distribué haute performance développé sur la base du langage Go, compatible avec Amazons3. Il prend en charge une variété de langages clients, notamment Java, Python, JavaScript et GO. Cet article introduira brièvement l'installation et la compatibilité de Minio sur les systèmes CentOS. Compatibilité de la version CentOS Minio a été vérifiée sur plusieurs versions CentOS, y compris, mais sans s'y limiter: CentOS7.9: fournit un guide d'installation complet couvrant la configuration du cluster, la préparation de l'environnement, les paramètres de fichiers de configuration, le partitionnement du disque et la mini

La formation distribuée par Pytorch sur le système CentOS nécessite les étapes suivantes: Installation de Pytorch: La prémisse est que Python et PIP sont installés dans le système CentOS. Selon votre version CUDA, obtenez la commande d'installation appropriée sur le site officiel de Pytorch. Pour la formation du processeur uniquement, vous pouvez utiliser la commande suivante: pipinstalltorchtorchVisionTorChaudio Si vous avez besoin d'une prise en charge du GPU, assurez-vous que la version correspondante de CUDA et CUDNN est installée et utilise la version Pytorch correspondante pour l'installation. Configuration de l'environnement distribué: la formation distribuée nécessite généralement plusieurs machines ou des GPU multiples uniques. Lieu

Lors de l'installation de Pytorch sur le système CentOS, vous devez sélectionner soigneusement la version appropriée et considérer les facteurs clés suivants: 1. Compatibilité de l'environnement du système: Système d'exploitation: Il est recommandé d'utiliser CentOS7 ou plus. CUDA et CUDNN: La version Pytorch et la version CUDA sont étroitement liées. Par exemple, Pytorch1.9.0 nécessite CUDA11.1, tandis que Pytorch2.0.1 nécessite CUDA11.3. La version CUDNN doit également correspondre à la version CUDA. Avant de sélectionner la version Pytorch, assurez-vous de confirmer que des versions compatibles CUDA et CUDNN ont été installées. Version Python: branche officielle de Pytorch

CENTOS L'installation de Nginx nécessite de suivre les étapes suivantes: Installation de dépendances telles que les outils de développement, le devet PCRE et l'OpenSSL. Téléchargez le package de code source Nginx, dézippez-le et compilez-le et installez-le, et spécifiez le chemin d'installation AS / USR / LOCAL / NGINX. Créez des utilisateurs et des groupes d'utilisateurs de Nginx et définissez les autorisations. Modifiez le fichier de configuration nginx.conf et configurez le port d'écoute et le nom de domaine / adresse IP. Démarrez le service Nginx. Les erreurs communes doivent être prêtées à prêter attention, telles que les problèmes de dépendance, les conflits de port et les erreurs de fichiers de configuration. L'optimisation des performances doit être ajustée en fonction de la situation spécifique, comme l'activation du cache et l'ajustement du nombre de processus de travail.
