怎么用flask+mysql来实现一个简单的用户注册和登陆效果的页面

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么用flask+mysql来实现一个简单的用户注册和登陆效果的页面相关的知识,希望对你有一定的参考价值。

用flask+mysql实现用户的注册和登录:

一个简单的用户注册和登录的页面,就两个部分。

涉及到数据库,存储用户数据(注册),读出用户数据(登录验证)。搞清楚如何用python连接和操作数据库即可,还有了解sql数据库语句,sqlite和mysql差不多的,看几眼多试几下就了解了。

网站程序,前端如何发送表单,后端获取用户发送的请求,和数据库中数据验证是否能够登录,然后登录后如何保存用户登录信息,就是使用的cookie,不过在flask中是session(其实session也是cookie,flask把它封装了下,成了加密的cookie)。

举例如下:

from functools import wrapsdef authorize(fn):
    @wraps(fn)
    def wrapper(*args, **kwds):
        user = session.get(\'logged_in\', None)
        if user:
            return fn(user=user)
        else:
            return redirect(url_for(\'signin\',next=request.path))

    return wrapper@app.route(\'/home\')@authorizedef home(**kwds):
    username = kwds[\'user\']
    return render_template(\'index.html\' ,username=username)#加密存储密码import osimport hashlibdef encrypt_password(password, salt=None):
    if not salt:
        salt = os.urandom(16).encode(\'hex\') # length 32
    result = password
    for i in range(3):
        result = hashlib.sha256(password + salt).hexdigest()[::2] #length 32
    return result, salt#简单的错误处理class loginError(Exception):
    def __init__(self, value):
        self.value = value
    def __str__(self):
        return repr(self.value)# 注册登录(下面的代码没有实际运行过)# 连接数据库我是使用的是 mysql.connector # http://dev.mysql.com/downloads/connector/python/# 写法和常用的MySQL-python稍有所不同# 下面没有连接数据库的代码@app.route(\'/register/\', methods=[\'GET\',\'POST\'])def request():
    if request.method == \'GET\':
        return render_template("register.html")
    if request.method == \'POST\':
        # 这里最好需要验证用户输入,我就不写了
        u = request.form[\'username\']
        p,s = encrypt_password(request.form[\'password\'])
        g.db.cursor.execute(\'INSERT INTO users (name,password,salt) VALUES (%s,%s,%s)\',(u,p,s,)
        g.db.commit()
        return redirect(url_for(\'signin\'))@app.route(\'/signin/\', methods=[\'GET\',\'POST\'])def signin():
    if request.method == \'GET\':
        referrer = request.args.get(\'next\',\'/\')
        return render_template("login.html",next=referrer)
    if request.method == \'POST\':
        u = request.form[\'username\']
        p = request.form[\'password\']
        n = request.form[\'next\']
        try:
            g.db.cursor.execute(\'SELECT `name` FROM users WHERE name = %s\',(u,))
            if not g.db.cursor.fetchone():
                raise loginError(u\'错误的用户名或者密码!\')
            g.db.cursor.execute(\'SELECT `salt`,`password` FROM users WHERE name = %s\',(u,))
            salt,password = g.db.cursor.fetchone()
            if encrypt_password(p,salt)[0] == password:
                session[\'logged_in\'] = u
                return redirect(next)
            else:
                raise loginError(u\'错误的用户名或者密码!\')
        except loginError as e:
            return render_template(\'login.html\', next=next,error=e.value)@app.route(\'/signout/\', methods=[\'POST\'])def signout():
    session.pop(\'logged_in\', None)
    return redirect(url_for(\'home\'))
参考技术A   一个简单的用户注册和登录的页面,就两个部分。
  涉及到数据库,存储用户数据(注册),读出用户数据(登录验证)。搞清楚如何用python连接和操作数据库即可,还有了解sql数据库语句,sqlite和mysql差不多的,看几眼多试几下就了解了。
  网站程序,前端如何发送表单(别告诉这你也不清楚?)后端获取用户发送的请求,和数据库中数据验证是否能够登录,然后登录后如何保存用户登录信息,就是使用的cookie,不过在flask中是session(其实session也是cookie,flask把它封装了下,成了加密的cookie)
  总之如果你认真跟着官方的教程走过一遍。只是完成用户登录和注册的功能都不难的。虽然这些知识点都不烂,但是覆盖范围还比较广泛。数据库,前端的html,后端的程序框架,你对其中一项不太了解都会让你有种无法下手的感觉。
  好吧。丢一段验证登录代码上来,因为flask的路由是通过绑定一个个函数来实现的,如果你要在给每个路由都添加一段验证登录的代码还是蛮麻烦的,不过通过装饰器这个功能实现起来还是蛮方便的。本回答被提问者和网友采纳

flask框架--cookie,session

今天我又给大家分享一下怎么用flask框架来实现像淘宝购物车一样存储数据,并且把存储的数据删除,这个方法可以用两个方法都可以做成,一个是cookie,另一个是session。

session是依赖于cookie的,session一般用在敏感的重要的信息的存储,存储在服务端中的

cookie是把数据存储在客户端是为了辨别用户身份,进行会话跟踪而存储在用户本地的数据(通常经过加密)

我先写一下cookie的代码

用cookie完成的话先用make_response库,调用cookie依赖的request模块

from flask import Flask,make_response,request

先建立对象

app = Flask(__name__)

然后从配置文件加载配置

app.config.from_pyfile(‘config.ini‘)

@app.route(‘/‘)

def index():
  return"这是首页"

存cookie的方法

@app.route(‘/setcookie‘)

def set_cookie():
  resp = make_response(‘存储cookie‘)

  使用方法set_cookie来存储key_value形式的数据

  resp.set_cookie(‘productnamae‘,‘卫生纸‘)

调用cookie 的方法

@app.route(‘/getcookie‘)

def get_cookie():
  通过request模块的cookies模块的get方法,指定key调用value

  resp = request.cookies.get(‘productnameae‘)

  return resp

删除模块

@app.route(‘delecookie‘)

def del_cookie():
  通过make_response对象内置的delete_cookie方法,指定key调用value

  resp = make_response(‘删除cookie‘)

  resp.delete_cookie

  return resp

#程序入口

if __name__=="__main__"

  app.run()

 

session方法和cookie方法差不多~

不过在session方法的配置文件里 必须加入一个SECRET_KEY=‘sadfa’这个东西

前面的都一样我就不写了,我就从存储数据哪里开始写~

存储session的方法

@app.route(‘/set_session‘)

def set_session():

  直接使用session对存储的内容赋值

  session[‘username‘] = ‘你好‘

  return ‘存储session成功‘

调用session的方法

@app.route(‘/get_session‘)

def get_session():

  通过session直接对内容进行调用

  se = session[‘username‘]

  return se

删除session的方法

@app.route(‘/del_session‘)

def del_session():

  通过session的pop方法来删除指定的key来删除value

  session.pop(‘username‘)

  return ‘删除成功‘

然后和上面的一样用程序入口运行一下程序就可以了

 





以上是关于怎么用flask+mysql来实现一个简单的用户注册和登陆效果的页面的主要内容,如果未能解决你的问题,请参考以下文章

flask-login怎么实现用多个model登录,如管理员表,用户表分开登录

Flask博客实战 - 实现登录注册功能

如何用flask实现一个web应用来显示在mysql数据库中查询到的内容

Flask 框架的功能 以及 重点。

flask-SQLAlchemy 的 update 操作是怎么用的呢

flask框架有啥用?