栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

flask登录实例_使用flask-WTF,Flask-Login,sqlite3实现登录和注册(前端登录和注册页面)?

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

flask登录实例_使用flask-WTF,Flask-Login,sqlite3实现登录和注册(前端登录和注册页面)?

文章目录

1.文件结构:2.实现效果:3.使用的可视化工具(工具DB Browser for sqlite下载):4.参考过的文章(一部分代码来自这里):5.主文件.main.py:6.前端文件index.html:7.前端文件login.html:8.前端文件register.html:9.前端文件showinfo.html(消息闪现):

1.文件结构:

2.实现效果:






3.使用的可视化工具(工具DB Browser for sqlite下载):

http://www.sqlitebrowser.org/
注:这个工具也可以不用下载,只要以下方式连接数据库之后也可以使用刚才的界面操作(主要是可视化)。

4.参考过的文章(一部分代码来自这里):

https://b23.tv/fV7TiYd

5.主文件.main.py:
import os
import sqlite3 as lite
from flask_wtf import FlaskForm
from flask_sqlalchemy import SQLAlchemy#flask-sqlalchemy
from sqlalchemy import String,Column,Integer
from werkzeug.security import generate_password_hash,check_password_hash
from wtforms.validators import ValidationError,DataRequired,Length,EqualTo
from flask import Flask,render_template,redirect,request,url_for,flash,jsonify
from wtforms import StringField,SubmitField,textareaField,PasswordField,BooleanField
from flask_login import LoginManager,UserMixin,current_user,login_user,logout_user,login_required

app=Flask(__name__)

#获得当前目录路径
# basedir=os.path.abspath(os.path.dirname(__file__))
basedir=os.getcwd()
tab1_user=basedir+'\app.db'
print(basedir)
print(tab1_user)

#配置数据库
class Config(object):
    SECRET_KEY='flask_login'
    SQLALCHEMY_DATAbase_URI='sqlite:///'+os.path.join(basedir,'app.db')
    SQLALCHEMY_TRACK_MODIFICATIONS=False

app.config.from_object(Config)
mysql=SQLAlchemy(app)
login_manager=LoginManager(app)

#创建登录表单类
class LoginForm(FlaskForm):
    username=StringField(label='用户名',validators=[DataRequired()])
    password=PasswordField(label='密码',validators=[DataRequired()])
    remember_me=BooleanField(label='记住我')
    submit=SubmitField(label='登录')

#注册表单
class RegisgerForm(FlaskForm):
    username=StringField(label='用户名',validators=[DataRequired()])
    password=PasswordField(label='设置密码',validators=[DataRequired()])
    submit=SubmitField(label='注册')

#UserMixin: 表示通过认证用户
#is_authenticated: 表示用户是否通过登录认证属性,用True和Flase表示
#is_active: 表示用户账户是活跃的,那么这个属性是True,否则就是Flase
#is_anonymous: 表示常规用户的该属性是Flase ,对特定的用户是True
class User(mysql.Model,UserMixin):
    #定义表名
    __tablename__='tab_user'
    id=Column(Integer,primary_key=True)
    username=Column(String(128),index=True,unique=True)
    password_hash=Column(String(128),unique=True)

    # #将密码经过哈希处理,使用密文形式
    def set_password(self):
        self.password_hash=generate_password_hash(self.password_hash)
    #验证密码是否正确
    #Returns `True` if the password matched, `False` otherwise.
    def validate_password(self,password):
        return check_password_hash(self.password_hash,password)
    #定义输出格式
    def __repr__(self):
        return ' 
6.前端文件index.html: 



    
    Title


    

这是首页

{% with messages=get_flashed_messages() %} {% if messages %} {% for message in messages %}

{{message}}

{% endfor %} {% endif %} {% endwith %}
  • 查询登录名路径,登录状态才能查询: /showuser
  • {% if current_user.is_authenticated %}
  • 当前登录用户名: {{username}}
  • 登出
  • {% else %}
  • 登录
  • {% endif %}
    7.前端文件login.html:
    
    
    
        
        Title
        
    
    
        

    登录页面

    {% with messages=get_flashed_messages()%} {% if messages %} {% for message in messages %}

    {{message}}

    {% endfor %} {% endif%} {% endwith %}
    {{form.csrf_token()}}

    {{form.username.label}}
    {{form.username}}

    {{form.password.label}}
    {{form.password}}

    {{form.remember_me()}} {{form.remember_me.label}}

    {{form.submit()}}

    8.前端文件register.html:
    
    
    
        
        Rigister
        
    
    
        

    注册页面

    {% with messages=get_flashed_messages() %} {% if messages%} {% for message in messages%}

    {{message}}

    {% endfor %} {% endif %} {% endwith %}
    {{registerform.csrf_token()}}

    {{registerform.username.label}}
    {{registerform.username}}

    {{registerform.password.label}}
    {{registerform.password}}

    {{registerform.submit()}}

    9.前端文件showinfo.html(消息闪现):
    
    
    
        
        showinfo
    
    
        
    {% with messages=get_flashed_messages() %} {% if messages%} {% for message in messages%}

    {{message}}

    {% endfor %} {% endif %} {% endwith %}
  • 登录
  • 转载请注明:文章转载自 www.mshxw.com
    本文地址:https://www.mshxw.com/it/786922.html
    我们一直用心在做
    关于我们 文章归档 网站地图 联系我们

    版权所有 (c)2021-2022 MSHXW.COM

    ICP备案号:晋ICP备2021003244-6号