python bottle框架 网站_用python web框架 bottle 开发网站(三)

上一节我们判断登录逻辑的处理方式是把用户名(username)和密码(password)直接硬编码到代码中,接下来,我们使用文本文档作为用户名和密码的保存方式,我们首先实现明文用户名和密码保存。注意:在实际的用户系统中,我们绝对不能明文保存用户密码,这是对用户的不负责。

新建user.py文件,写登录逻辑处理函数

#user.py

import os

if not os.path.exists('./userinfo.txt'):

open('./userinfo.txt', 'w', encoding = 'utf-8').close()

def read_user(username, password):

userinfo = dict()

with open('./userinfo.txt', 'r') as fob:

for line in fob.readlines():

uname = line.strip().split('=>')[0]

try:

pwd = line.strip().split('=>')[1]

userinfo[uname] = pwd

except:

print('\033[1;31;40m 严重:用户信息文件格式错误,系统无法运行 \033[0m')

exit(1)

if username not in userinfo:

return False

if userinfo[username] == password:

return True

return False

总结一下read_user函数的功能就是根据传入的用户名和密码,判断是否和userinfo.txt中的账号密码匹配,如果正确返回True,反之。

在userinfo.txt使用=>标识分割用户名和密码。

#main.py

from bottle import run,route,template,request

from user import read_user

@route("/login", method = 'get')

def index():

return template('login')

@route('/login', method = 'post')

def index():

username = request.forms.get('username')

password = request.forms.get('password')

if read_user(username, password):

return '登录成功'

return '账号密码错误'

run(host = 'localhost', port = 80, debug = True, reloader = True)

我们在main.py中导入user Module,然后修改判断逻辑if username == 'admin' and password == 'root'为if read_user(username, password)

先手动在userinfo.txt中写入一些测试的账号和密码

userinfo.txt

然后模拟登陆系统,

image.png

console中看提交的网络请求

image.png

当然,目前为止还是一个玩具,还有很多要完善的东西。

前端传输用户信息加密

后端加密保存用户密码

更友好的用户登录界面

螺丝帽验证码

注册用户

识别用户登录状态

退出登录

修改密码

………………

接下来我们首先实现完善系统,实现注册,登录,状态保持,退出等功能。

你可能感兴趣的:(python,bottle框架,网站)