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.实现效果:
http://www.sqlitebrowser.org/
注:这个工具也可以不用下载,只要以下方式连接数据库之后也可以使用刚才的界面操作(主要是可视化)。
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 %}
8.前端文件register.html:
Rigister
注册页面
{% with messages=get_flashed_messages() %}
{% if messages%}
{% for message in messages%}
{{message}}
{% endfor %}
{% endif %}
{% endwith %}
9.前端文件showinfo.html(消息闪现):
showinfo
{% with messages=get_flashed_messages() %}
{% if messages%}
{% for message in messages%}
{{message}}
{% endfor %}
{% endif %}
{% endwith %}
登录



