falsk练习小项目——利用mysql实现登录+注册

本文主要记录利用python的Flask框架和Mysql数据库实现登录+注册功能,

创建项目文件

templates文件夹主要放网页文件
static文件夹下主要放静态文件比如 css、js 、图片等等;
因为在flask框架下默认模板文件是放在templates下的,所以不要把文件名写错了,当然也可以自定义文件夹名的,不过在后面创建对象的时候需要单独加一下,这个后面代码会说的

创建数据库

数据库结构如下图
注意主键不要漏了,不然后面注册的时候出现id重复就麻烦了,当然我们会有异常处理的,如果没有定义主键约束或者唯一约束,异常也就捕获不了了
在这里插入图片描述

下面写数据库管理类
import pymysql
# sql连接、 数据库连接类、数据库操作方法
from pymysql import IntegrityError


class sjk():
    def __init__(self):
        self.opensql()


    def opensql(self):

        '''获取数据库连接'''
        self.conn=pymysql.connect('localhost',user='root',passwd='123456')
        self.conn.select_db('python_flask')
        print("数据库连接成功")
        return self.conn


    def downsql(self):
        global conn
        self.conn.close()
        print("数据库关闭成功")


    def user_inqure(self,id):
        # 查询方法,需要提供id返回密码和姓名数组
        cur=self.conn.cursor()
        sql="select `name`,`password` from `user` where id={0}".format(id)

        cur.execute(sql)

        res=cur.fetchone()

        # 以下处理数据查找不到的问题
        if res==None:

            self.downsql()
            return 0

        else:

            self.downsql()
            cur.close() #

        return res


    def user_add(self,id,password,name):
        cur=self.conn.cursor()
        sql="insert into user (`id`,`password`,`name`)values(%s,%s,%s)" # 最好采用这种方式添加
        try:
            n=cur.execute(sql,(id,password,name))
            self.conn.commit() # 提交事务
            cur.close() # 关闭游标
            self.downsql() #关闭连接
            return n

        except IntegrityError:
            cur.close()# 关闭游标
            self.downsql() # 关闭连接
            return 0

创建主页的HTML文件
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>主页</title>
</head>
<body background="../static/img/back.jpg" > 
<center><h1>欢迎来到我的世界</h1></center>


<h3><center><a href="{{t1}}">登录</a></center></h3>

<h3><center><a href="{{t2}}">注册</a></center></h3>


</body>
</html>
创建登录页面的额HTML文件
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录</title>
</head>
<body background="../static/img/4.jpg">
<h2><center>登录</center></h2>

    <form action="log" method="post">

        账号:<input type="text" name="id"/><br/>

        &nbsp;:<input type="password" name="password"/><br/>



        <input type="submit" value="登录"/>
        <input type="reset" value="重置"/>

    </form>
</body>
</html>
创建注册页面的HTML文件
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>注册界面</title>

</head>
<body background="../static/img/3.jpg">
<form action="page" method="post" >

    昵称:<input type="text" name="name"><br/>
    账号:<input type="text" name="id"> <br/>
    密码:<input type="password" name="password"><br/>

    <input type="submit" value="提交"><input type="reset" value="重置">

</form>

</body>
</html>
最后是最重要的flask路由和视图函数
from flask import Flask, render_template, url_for, request

import  sql
app = Flask(__name__)

#上面说过,如果自定义的放html文件的文件夹不是templates,就需要像下面这样创建app对象
# app=Flask(__namee__,template=“自定义的文件夹名”)

sjk=sql.sjk()  #创建数据库连接对象


@app.route('/')
def homepage():
    '''主页'''
    return render_template('index.html',t1=url_for('login'),t2=url_for('zhuce'))




@app.route('/log',methods=['POST','GET'])
def do_log():
    '''登录'''
    id=request.form['id']
    password=request.form['password']
    list=sjk.user_inqure(id) # 调用查询

    if list==0:
        return "不存在此用户"

    else:
        if list[1]==password:
            return "恭喜{0}登录成功".format(list[0])

        else:
            return '请检测密码是否输入正确'



@app.route('/123')
def login():
    '''登录页面'''
    return render_template('login.html')


@app.route('/124')
def zhuce():
    '''注册页面'''

    return render_template('zhuce.html')


@app.route('/page',methods=['post','get'])
def page():
    '''注册处理方法'''
    id=request.form['id']
    name=request.form['name']
    password=request.form['password']

    n=sjk.user_add(id,name,password) # 添加到是数据库中

    if n==1:
        return '<h3><center>{0}恭喜注册成功</center></h3>'.format(name)

    else:
        return '<h3><center>{0}很抱歉~注册失败~请换个昵称试试呢</center></h3>'.format(name)





if __name__ == '__main__':
    app.debug=True  # 开启调试模式  注:在生成坏境不能开调试模式,有被攻击的额风险
    app.run()

最后放几张效果图

可能与背景图与读者不同,不过取决于读者自己使用的
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

共享给小伙伴访问

只需要将run()里面的host参数指定成0.0.0.0就可以了,然后将你的本地id地址提供给小伙伴,然后小伙伴使用ip地址+端口号5000就能访问了
不过需要关闭本地的防火墙,并且只能是在同一个局域网内才能访问


if __name__ == '__main__':
    app.debug=True  # 开启调试模式
    app.run(host=0.0.0.0)

访问成功
在这里插入图片描述

网约车大数据综合项目是一个集成了各种数据分析和可视化技术的项目,其中数据可视化是其中非常重要的一部分。数据可视化通过图表、地图等形式,将大量的数据信息以直观、易懂的方式展现出来,帮助项目团队和决策者更好地理解和利用数据。 Flask是一款轻量级的Python Web框架,ECharts是一个由百度开发的基于JavaScript的数据可视化库,它们可以很好地配合使用来实现数据可视化的需求。在网约车大数据综合项目中,我们可以利用Flask框架搭建Web应用程序的后端,通过Python语言处理数据,并结合ECharts库来实现前端数据可视化的功能。 具体来说,我们可以使用Flask来构建Web应用的后台服务器,接收用户的请求,并调用相应的数据处理函数。同时,利用ECharts库提供的丰富图表类型和交互功能,将经过处理的数据转换成直观的图表展示,例如折线图、柱状图、地图等。这样,用户就可以通过浏览器访问我们的Web应用,实时查看和分析网约车的相关数据,包括订单量、车辆分布、用户乘车轨迹等内容。 通过数据可视化flask echarts,我们不仅可以帮助项目团队更好地理解和利用网约车的大数据信息,还可以为决策者提供直观、准确的数据支持,帮助他们制定更科学合理的运营策略和规划。这将有助于提升网约车行业的整体运营效率和用户体验,进而推动行业的可持续发展。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值