基于Ajax的后台管理界面(flask框架的应用以及实现)

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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值