赞
踩
基于上期内容,入门简单的登录界面。链接如下:
本期主要加入mysql进行一个数据库的交互操作,实现账户密码的验证。废话不多说进入正题
下载MySQL在官网进行下载,这里不过多叙述,主要是配置root账户密码用于连接,这里提供一个数据库管理工具DBserver
下载pymsql安装包
conda install pymysql
如果没有conda环境,下载对应python版本后使用pip命令进行安装
pip install pymysql
其它环境参考上一篇文章
templates存放网页的模板
static存放静态资源
demo.py是主程序入口
tools存放工具测试类
index.html
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>主页</title>
- </head>
- <body>
- <h1>这是主页</h1>
- <a href="/l">前往登录</a>
- </body>
- </html>
login.html
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>登录</title>
- </head>
- <body>
- <form action="/login" method="post">
- <p>用户名:<input type="text" name="Username"></p>
- <p>密码:<input type="password" name="Passwd"></p>
- <input type="submit" value="登录">
- </form>
- </body>
- </html>
register.html
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>注册</title>
- </head>
- <body>
- <form action="/register" method="post">
- <p>用户名:<input type="text" name="Username"></p>
- <p>密码:<input type="password" name="Passwd"></p>
- <input type="submit" value="注册">
- </form>
- </body>
- </html>
welcome.html
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>欢迎</title>
- </head>
- <body>
- <h1>欢迎{{username}}</h1>
- <a href="/logout">登出</a>
- </body>
- </html>
demo.py
- #引入包
- from flask import Flask,request,session,render_template,redirect,url_for
- import pymysql
-
- #数据库链接函数
- #查询操作
- def Connect_db_select(username,passwd):
- try:
- #连接对象
- db = pymysql.connect(host='localhost', user='root', passwd='root', database="test_db", port=3306)
- #创建sql查询语句
- sql="select * from t_user where username='"+username+"'"+" and passwd='"+passwd+"'"
- cursor=db.cursor()
- cursor.execute(sql)
- result=cursor.fetchall()
- if len(result)>0:
- print("success")
- db.close()
- return True
- except:
- print("error")
- return False
- #插入操作
- def Connect_db_insert(username,passwd):
- try:
- #连接对象
- db = pymysql.connect(host='localhost', user='root', passwd='root', database="test_db", port=3306)
- #创建sql查询语句
- sql="insert into t_user (username,passwd) values('"+username+"','"+passwd+"')"
- cursor=db.cursor()
- cursor.execute(sql)
- db.commit()
- if cursor.rowcount>0:
- print("success")
- db.close()
- return True
- except:
- print("error")
- return False
- #创建对象
- app=Flask(__name__)
- app.secret_key="zqh"
- #定义主画面
- @app.route("/")
- def index():
- return render_template("index.html")
- #定义登录界面
- @app.route("/l")
- def lo():
- return render_template("login.html")
- #定义注册界面
- @app.route("/r")
- def re():
- return render_template("register.html")
- #处理登录请求
- @app.route("/login",methods=["POST","GET"])
- def login():
- #get请求重定向要home页面
- if request.method=="GET":
- # 如果有直接进入主页
- if session.get("Username"):
- return render_template("welcome.html", username=session["Username"])
- #session没有就返回登录
- else:
- return redirect(url_for("lo"))
- #post请求处理form表单
- else:
- #输入的不是空的用户名或空的密码
- Username=request.form["Username"]
- Passwd=request.form["Passwd"]
- if Username!="" and Passwd!="":
- #进行用户名和数据的验证
- if Connect_db_select(Username,Passwd):
- session["Username"] = Username
- return render_template("welcome.html", username=session["Username"])
- #否则进行注册
- else:
- return redirect(url_for("re"))
- #否则重新进行登录
- else:
- return redirect(url_for("lo"))
-
- #处理注册请求
- @app.route("/register",methods=["POST","GET"])
- def register():
- # get请求重定向要home页面
- if request.method == "GET":
-
- # 如果有直接进入主页
- if session.get("Username"):
- return render_template("welcome.html", username=session["Username"])
-
- # session没有就返回注册
- else:
- return redirect(url_for("re"))
- # post请求处理form表单
- else:
- #输入的不是空的用户名或空的密码
- Username=request.form["Username"]
- Passwd=request.form["Passwd"]
- if Username!="" and Passwd!="":
- #进行用户名和数据的验证
- if Connect_db_insert(Username,Passwd):
- session["Username"] = Username
- return render_template("welcome.html", username=session["Username"])
- # 否则重新注册
- else:
- return redirect(url_for("re"))
- # 否则重新注册
- else:
- return redirect(url_for("re"))
- #处理登出
- @app.route("/logout")
- def logout():
- session.pop("Username",None)
- return redirect(url_for("index"))
- if __name__=="__main__":
- app.run(debug=True)
主要是进行了一个和数据库交互的操作,并通过flask展示在网页上。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。