当前位置:   article > 正文

(升级)Python+Flask+pymysql实现简单的登录注册_python mysql flask

python mysql flask

前言

基于上期内容,入门简单的登录界面。链接如下:

flask实现简单的登录界面

本期主要加入mysql进行一个数据库的交互操作,实现账户密码的验证。废话不多说进入正题

一、环境准备

1.下载MySQL

下载MySQL在官网进行下载,这里不过多叙述,主要是配置root账户密码用于连接,这里提供一个数据库管理工具DBserver

2.Conda环境

下载pymsql安装

conda install pymysql

如果没有conda环境,下载对应python版本后使用pip命令进行安装

pip install pymysql

其它环境参考上一篇文章

二、目录结构

templates存放网页的模板

static存放静态资源

demo.py是主程序入口

tools存放工具测试类

三、模板代码

index.html

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>主页</title>
  6. </head>
  7. <body>
  8. <h1>这是主页</h1>
  9. <a href="/l">前往登录</a>
  10. </body>
  11. </html>

login.html

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>登录</title>
  6. </head>
  7. <body>
  8. <form action="/login" method="post">
  9. <p>用户名:<input type="text" name="Username"></p>
  10. <p>密码:<input type="password" name="Passwd"></p>
  11. <input type="submit" value="登录">
  12. </form>
  13. </body>
  14. </html>

register.html

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>注册</title>
  6. </head>
  7. <body>
  8. <form action="/register" method="post">
  9. <p>用户名:<input type="text" name="Username"></p>
  10. <p>密码:<input type="password" name="Passwd"></p>
  11. <input type="submit" value="注册">
  12. </form>
  13. </body>
  14. </html>

welcome.html

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>欢迎</title>
  6. </head>
  7. <body>
  8. <h1>欢迎{{username}}</h1>
  9. <a href="/logout">登出</a>
  10. </body>
  11. </html>

四、后端实现

demo.py

  1. #引入包
  2. from flask import Flask,request,session,render_template,redirect,url_for
  3. import pymysql
  4. #数据库链接函数
  5. #查询操作
  6. def Connect_db_select(username,passwd):
  7. try:
  8. #连接对象
  9. db = pymysql.connect(host='localhost', user='root', passwd='root', database="test_db", port=3306)
  10. #创建sql查询语句
  11. sql="select * from t_user where username='"+username+"'"+" and passwd='"+passwd+"'"
  12. cursor=db.cursor()
  13. cursor.execute(sql)
  14. result=cursor.fetchall()
  15. if len(result)>0:
  16. print("success")
  17. db.close()
  18. return True
  19. except:
  20. print("error")
  21. return False
  22. #插入操作
  23. def Connect_db_insert(username,passwd):
  24. try:
  25. #连接对象
  26. db = pymysql.connect(host='localhost', user='root', passwd='root', database="test_db", port=3306)
  27. #创建sql查询语句
  28. sql="insert into t_user (username,passwd) values('"+username+"','"+passwd+"')"
  29. cursor=db.cursor()
  30. cursor.execute(sql)
  31. db.commit()
  32. if cursor.rowcount>0:
  33. print("success")
  34. db.close()
  35. return True
  36. except:
  37. print("error")
  38. return False
  39. #创建对象
  40. app=Flask(__name__)
  41. app.secret_key="zqh"
  42. #定义主画面
  43. @app.route("/")
  44. def index():
  45. return render_template("index.html")
  46. #定义登录界面
  47. @app.route("/l")
  48. def lo():
  49. return render_template("login.html")
  50. #定义注册界面
  51. @app.route("/r")
  52. def re():
  53. return render_template("register.html")
  54. #处理登录请求
  55. @app.route("/login",methods=["POST","GET"])
  56. def login():
  57. #get请求重定向要home页面
  58. if request.method=="GET":
  59. # 如果有直接进入主页
  60. if session.get("Username"):
  61. return render_template("welcome.html", username=session["Username"])
  62. #session没有就返回登录
  63. else:
  64. return redirect(url_for("lo"))
  65. #post请求处理form表单
  66. else:
  67. #输入的不是空的用户名或空的密码
  68. Username=request.form["Username"]
  69. Passwd=request.form["Passwd"]
  70. if Username!="" and Passwd!="":
  71. #进行用户名和数据的验证
  72. if Connect_db_select(Username,Passwd):
  73. session["Username"] = Username
  74. return render_template("welcome.html", username=session["Username"])
  75. #否则进行注册
  76. else:
  77. return redirect(url_for("re"))
  78. #否则重新进行登录
  79. else:
  80. return redirect(url_for("lo"))
  81. #处理注册请求
  82. @app.route("/register",methods=["POST","GET"])
  83. def register():
  84. # get请求重定向要home页面
  85. if request.method == "GET":
  86. # 如果有直接进入主页
  87. if session.get("Username"):
  88. return render_template("welcome.html", username=session["Username"])
  89. # session没有就返回注册
  90. else:
  91. return redirect(url_for("re"))
  92. # post请求处理form表单
  93. else:
  94. #输入的不是空的用户名或空的密码
  95. Username=request.form["Username"]
  96. Passwd=request.form["Passwd"]
  97. if Username!="" and Passwd!="":
  98. #进行用户名和数据的验证
  99. if Connect_db_insert(Username,Passwd):
  100. session["Username"] = Username
  101. return render_template("welcome.html", username=session["Username"])
  102. # 否则重新注册
  103. else:
  104. return redirect(url_for("re"))
  105. # 否则重新注册
  106. else:
  107. return redirect(url_for("re"))
  108. #处理登出
  109. @app.route("/logout")
  110. def logout():
  111. session.pop("Username",None)
  112. return redirect(url_for("index"))
  113. if __name__=="__main__":
  114. app.run(debug=True)

五、总结

主要是进行了一个和数据库交互的操作,并通过flask展示在网页上。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/483388
推荐阅读
相关标签
  

闽ICP备14008679号