tkinter和mysql做登录注册_怎么用flask+mysql来实现一个简单的用户注册和登陆效果的页面呢?请不要用任何ORM...

这篇博客介绍了如何使用Python的Flask框架搭建一个简单的用户注册和登录系统。涉及的关键技术包括Python连接SQLite或MySQL数据库、HTML前端表单提交、后端路由处理以及使用session进行用户状态管理。通过示例代码展示了数据库操作、用户验证以及登录状态的维护,强调了整个过程中的主要步骤和注意事项。
摘要由CSDN通过智能技术生成

bd02fb8a85de4636967948c4881d025f.png

摇曳的蔷薇

不是有教程么?http://docs.jinkan.org/docs/f...一个简单的用户注册和登录的页面,就两个部分。涉及到数据库,存储用户数据(注册),读出用户数据(登录验证)。搞清楚如何用python连接和操作数据库即可,还有了解sql数据库语句,sqlite和mysql差不多的,看几眼多试几下就了解了。网站程序,前端如何发送表单(别告诉这你也不清楚?)后端获取用户发送的请求,和数据库中数据验证是否能够登录,然后登录后如何保存用户登录信息,就是使用的cookie,不过在flask中是session(其实session也是cookie,flask把它封装了下,成了加密的cookie)总之如果你认真跟着官方的教程走过一遍。只是完成用户登录和注册的功能都不难的。虽然这些知识点都不烂,但是覆盖范围还比较广泛。数据库,前端的html,后端的程序框架,你对其中一项不太了解都会让你有种无法下手的感觉。好吧。丢一段验证登录代码上来,因为flask的路由是通过绑定一个个函数来实现的,如果你要在给每个路由都添加一段验证登录的代码还是蛮麻烦的,不过通过装饰器这个功能实现起来还是蛮方便的例子fromfunctoolsimportwrapsdefauthorize(fn):@wraps(fn)defwrapper(*args,**kwds):user=session.get('logged_in',None)ifuser:returnfn(user=user)else:returnredirect(url_for('signin',next=request.path))returnwrapper@app.route('/home')@authorizedefhome(**kwds):username=kwds['user']returnrender_template('index.html',username=username)#加密存储密码importosimporthashlibdefencrypt_password(password,salt=None,encryptlop=30):ifnotsalt:salt=os.urandom(16).encode('hex')#length32foriinrange(encryptlop):password=hashlib.sha256(password+salt).hexdigest()#length64returnpassword,salt#简单的错误处理classloginError(Exception):def__init__(self,value):self.value=valuedef__str__(self):returnrepr(self.value)#注册登录(下面的代码没有实际运行过)#连接数据库我是使用的是mysql.connector#http://dev.mysql.com/downloads/connector/python/#写法和常用的MySQL-python稍有所不同#下面没有连接数据库的代码@app.route('/register/',methods=['GET','POST'])defrequest():ifrequest.method=='GET':returnrender_template("register.html")ifrequest.method=='POST':#这里最好需要验证用户输入,我就不写了u=request.form['username']p,s=encrypt_password(request.form['password'])g.db.cursor.execute('INSERTINTOusers(name,password,salt)VALUES(%s,%s,%s)',(u,p,s,)g.db.commit()returnredirect(url_for('signin'))@app.route('/signin/',methods=['GET','POST'])defsignin():ifrequest.method=='GET':referrer=request.args.get('next','/')returnrender_template("login.html",next=referrer)ifrequest.method=='POST':u=request.form['username']p=request.form['password']n=request.form['next']try:g.db.cursor.execute('SELECT`name`FROMusersWHEREname=%s',(u,))ifnotg.db.cursor.fetchone():raiseloginError(u'错误的用户名或者密码!')g.db.cursor.execute('SELECT`salt`,`password`FROMusersWHEREname=%s',(u,))salt,password=g.db.cursor.fetchone()ifencrypt_password(p,salt)[0]==password:session['logged_in']=ureturnredirect(next)else:raiseloginError(u'错误的用户名或者密码!')exceptloginErrorase:returnrender_template('login.html',next=next,error=e.value)@app.route('/signout/',methods=['POST'])defsignout():session.pop('logged_in',None)returnredirect(url_for('home'))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值