AJAX原理:
Ajax(Asynchronous JavaScript and XML),直译为“异步的JavaScript与XML技术”,是一种创建交互式网页应用的网页开发技术,用于创建快速动态网页,由杰西·詹姆士·贾瑞特所提出。
好处:与传统的Web应用相比,Ajax通过浏览器与服务器进行少量的数据交换就可以实现网页的异步更新,在不重新加载整个网页的情况下,即可对网页进行更新。
注:此篇文章主要使用了flask框架应用MVC架构的后台管理界面功能的实现,即对数据库进行异步的增删改查操作。
文件架构(一个 “—” 代表第一层文件目录,两个"——"代表第二层):
bs_ly_flask(本文章项目名)
—controller(控制层文件夹)
——usercontroller.py(控制层文件,其方法均为装饰器函数,控制视图层中各种对数据的操作)
—dao(连接数据库的文件夹)
——basedao.py(连接数据库以及提供通用的数据库接口文件)
——pymysql.json(数据库信息配置文件)
——userdao.py(提供执行sql增删改查方法的文件)
—entity(封装实体的文件夹)
——user.py(初始化用户实体属性的文件)
—service(为控制层提供服务的文件夹)
——userservice.py(接收控制层传来的数据,调用userdao.py文件中的方法对数据进行处理,然后将其返回给控制层;其中,查询操作在返回时,需要进行实体封装后再进行返回)
—static(存放各种js、css以及img子文件夹)
——img(文件夹,存放前端界面的各种图片)
——js(文件夹,存放.js文件)
——css(存放.css文件)
—templates(存放各种.html用户界面)
——systeminfo(文件夹,主要存放后台界面)
—app.py(启动程序文件)
以上则是本次flask项目的大体文件架构。
以下为各个文件的具体代码实现,各文件顺序与文件架构中的顺序相同:
usercontroller.py文件(此文件为未删减版):
from flask import render_template,Response,Blueprint,session,request
from service.userservice import UserService
from entity.user import User
import json
usercontroller = Blueprint('usercontroller',__name__)
userService=UserService()
@usercontroller.route('/login.do',methods=['POST','GET'])
def login():
username = request.form.get('username')
userpwd = request.form.get('userpwd')
result = userService.findUserByUserName(username) #去数据库里找
if result and result[0][2]==userpwd:
session["username"]=username
resp = Response(render_template("index.html",message="登陆成功"))
resp.set_cookie('username',username,max_age=7*24*3600)
resp.set_cookie('userpwd',userpwd,max_age=7*24*3600)
return resp
elif result and result[0][2]!=userpwd:
return render_template("login.html",message='用户名或密码错误!!!')
return render_template("login.html")
pass
@usercontroller.route('/logout.do',methods=['POST','GET'])
def logout():
session.clear()
resp = Response(render_template("index.html"))
resp.delete_cookie('username')
resp.delete_cookie('userpwd')
return resp
pass
@usercontroller.route('/goRegister.do') #用户点击注册按钮去注册界面
def goRegister():
return render_template('register.html')
@usercontroller.route('/register.do',methods=['POST','GET'])
def register():
username = request.form.get('username')
userpwd = request.form.get('pword')
reuserpwd = request.form.get('repword')
zsusername = request.form.get('zsname')
ages = request.form.get('ages')
sex = request.form.get('sexx')
telphone=request.form.get('telphone')
city = request.form.get('city')
xxdz = request.form.get('xxdz')
user=User()
user.userName = username
user.userPwd = userpwd
user.reUserPwd = reuserpwd
user.zsUserName = zsusername
user.ages = ages
user.sex = sex
user.telphone = telphone
user.city = city
user.xxdz = xxdz
result = userService.createUser(user)
if result>0:
return render_template("login.html",message="注册成功")
else:
return render_template("register.html",message="注册失败")
pass
#管理员登陆验证暂时未写,便于测试
@usercontroller.route('/mglogin.do',methods=['POST','GET'])
def mglogin():
return render_template("mglogin.html")
pass
@usercontroller.route('/mgrigister.do',methods=['POST','GET'])
def mgrigister():
return render_template("mgrigister.html")
pass
#查询用户信息并显示:支持其中一个条件满足,也支持同时满足。
@usercontroller.route('/gouserinfo.do',methods=['POST','GET'])
def goUserInfo():
userName = request.form.get('userName')
userCity = request.form.get('userCity')
user = User()
user.userName = userName
user.city = userCity
userList = userService.findUserList(user)
return render_template('systeminfo/messageinfo.html', userList=userList, user=user) # 前端用的key
#删除功能
@usercontroller.route('/removeuser.do',methods = ['POST','GET'])
def goRemoveUser():
userId = request.args.get('userId')
userName = request.form.get('userName')
userCity = request.form.get('userCity')
user = User()
user.userName = userName
user.city = userCity
result = userService.removeUser(userId)
userList = userService.findUserList(user)
return render_template('systeminfo/messageinfo.html',userList=userList,message="删除成功" if result>0 else "删除失败") #前端用的key
#修改
@usercontroller.route('/checkusername.do',methods = ['POST','GET'])
def checkUserName():
userdata = request.get_data()
userDict = json.loads(userdata)
user = User()
user.userId = userDict.get('userId') #将数据赋给user实体的属性
user.userName=userDict.get('userName')
user.zsUserName = userDict.get('userzsname')
user.ages = userDict.get('userages')
user.sex = userDict.get('usersex')
user.telphone =userDict.get('usertelphone')
user.city = userDict.get('usercity')
user.xxdz = userDict.get('userxxdz')
result = userService.updateUser(user) #
dicts={}
if result:
dicts = {'code':1}
else:
dicts = {'code':0}
return json.dumps(dicts)
pass
#其实增删改查事务都可在这里写,有兴趣的小白可以去尝试
@usercontroller.route('/ajaxuserinfo.do', methods=['POST', 'GET'])
def getUserInfo():
userData = request.get_data()
userDict = json.loads(userData)
tData = {}
user = User()
user.userName = userDict.get('userName')
user.city = userDict.get('userCity')
currentPage = int(userDict.get('currentPage'))
pageSize = int(userDict.get('pageSize'))
opr = userDict.get('opr')
userId = int(userDict.get('userId'))
user.userId = userId
result = userService.findPageUserList(user, pageSize, currentPage)
counts = userService.countUsers(user)
totalPage = 0
if(counts%pageSize == 0):
totalPage = counts//pageSize
else:
totalPage = counts // pageSize + 1
pa