文件的层级关系:
- work
-
control
- blueprint.py
-
dao
- basedao.py
- pymysql.json
- userdao.py
-
entity
- user.py
-
service
- userservice.py
-
static
- css
- js
-
templates
- index.html
- login.html
- message.html
- regist.html
-
app.py
-
app.py
from flask import Flask,render_template
from controll.blueprint import blue
app = Flask(__name__)
app.config['DEBUG']=True
app.config['SECRET_KEY'] = 'AABBqwtgdger'
# 蓝图的差分
app.register_blueprint(blue)
@app.route('/')
def hello_world():
return render_template('index.html')
# 整个程序的入口
if __name__ == '__main__':
app.run(debug=True)
blueprint.py
from flask import Blueprint,request,render_template,session,Response
from service.userservice import UserService
import json
from entity.user import User
blue = Blueprint('blue',__name__)
userService = UserService() # 数据操作层
# 控制层
@blue.route('/login.do',methods=['POST','GET'])
def login():
if request.method == 'GET':
return render_template('login.html')
else:
userDate = request.get_data() # 获取ajax传来的数据
userDict = json.loads(userDate)
name = userDict.get('username')
passwd = userDict.get('password')
result = userService.findUserByUserName(name) # 数据的操作
dicts = {
}
if result and result[0][2]==passwd: # 进行密码和姓名的验证
session['username'] = name
dicts = {
'code': 1}
else:
dicts = {
'code': 0}
return json.dumps(dicts)
# 注销按钮
@blue.route('/logout.do',methods=['POST','GET']) # url路由
def logout():
session.clear()
resp = Response(render_template('index.html')) # 对模板的渲染
return resp
@blue.route('/regist.do',methods=['POST','GET']) # url路由
def regist():
if request.method == 'GET':
resp = Response(render_template('regist.html'))
return resp
else:
userDate = request.get_data()
userDict = json.loads(userDate)
name = userDict.get('username')
result = userService.findUserByUserName(name)
dicts = {
}
if result:
dicts = {
'code': 1}
else:
dicts = {
'code': 0}
return json.dumps(dicts)
# 注册界面
@blue.route('/adduser.do',methods=['POST','GET']) # url路由
def adduser():
if request.method == 'GET':
resp = Response(render_template('regist.html'))
return resp
else:
user = User()
user.username = request.form.get('username')
user.userpwd = request.form.get('userpwd')
user.usersex = request.form.get('sex')[0]
user.userage = request.form.get('age')
user.userqq = request.form.get('qq')
user.userphone = request.form.get('phone')
hobby = request.form.getlist('hobby')
flage = request.form.get('flages')
n = ''
for i in hobby:
n = n+i
user.userhobby = n
result = userService.createUser(user)
print(result)
if (result > 0):
# return render_template('alert(注册成功')
return '注册成功'
else:
return '注册失败'
@blue.route('/message.do', methods=['POST', 'GET']) # url路由
def message():
if request.method == 'GET':
user = User()
userlist = userService.findUserList(user)
return Response(render_template('message.html',userlist=userlist,flage=True))
else:
dicts = {
'code': 1}
return json.dumps(dicts)
@blue.route('/confirm1.do', methods=['POST', 'GET']) # url路由
def comfirm1():
userDate = request.get_data()
userDict = json.loads(userDate)
userid = userDict.get('userid')
username = userDict.get('username')
userpwd = userDict.get('userpwd')
userage = userDict.get('userage')
usersex = userDict.get('usersex')
userqq = userDict.get('userqq')
userphone = userDict.get('userphone')
userhobby = userDict.get('userhobby')
user = User()
user.userid=userid
user.username=username
user.userpwd=userpwd
user.userage = userage
user.usersex = usersex
user.userqq = userqq
user.userphone=userphone
user.userhobby=userhobby
result = userService.updateUser(user)
dicts = {
}
if result:
dicts = {
'code': 1}
else:
dicts = {
'code': 0}
return json.dumps(dicts)
# 删除按钮
@blue.route('/dell.do', methods=['POST', 'GET']) # url路由
def dell():
userDate = request.get_data()
userDict = json.loads(userDate)
userid = userDict.get('userid')
result = userService.removeUser(userid)
dicts = {
}
if result:
dicts = {
'code': 1}
else:
dicts = {
'code': 0}
return json.dumps(dicts)
#
def obj_json(obj):
return {
'userid' : obj.userid,
'username' : obj.username,
'usersex' : obj.usersex,
'userqq' : obj.userqq,
'userphone' : obj.userphone,
'userhobby' : obj.userhobby,
'userpwd' : obj.userpwd,
'userage' : obj.userage
}
@blue.route('/searchinfo.do', methods=['POST', 'GET']) # url路由
def searchinfo():
userDate = request.get_data()
userDict = json.loads(userDate)
username = userDict.get('username')
usersex = userDict.get('usersex')
# 换成一个字典
user = User()
user.username = username
user.usersex = usersex
result = userService.findUserList(user)
if result:
return json.dumps(result,default=obj_json) # json默认无法对user对象进行操作 定义obj_json方法进行格式规定
# dicts = {'code': 1, 'user': result}
else:
return json.dumps({
'code': 0})
# dicts = {'code': 0}
basedao.py
# 引入pymysql
import pymysql
import json
import logging
import os
class BaseDao(): # DAO: database access object
def __init__(self, configFile='pymysql.json'):
self.__connection = None
self.__cursor = None
self.__config = json.load(open(os.path.dirname(__file__) + os.sep + configFile, 'r')) # 通过json配置获得数据的连接配置信息
print(self.__config)
pass
# 获取数据库连接的方法
def getConnection(self):
# 当有连接对象是,直接返回连接对象
if self.__connection:
return self.__connection
# 否则通过建立新的连接对象
try:
self.__connection = pymysql.connect(**self.__config)
return self.__connection
except pymysql.MySQLError as e:
print("Exception:" + str(e))
pass
pass
# 用于执行sql语句的通用方法 # sql注入
def execute(self, sql, params=None):
try:
self.__cursor = self.getConnection().cursor()
# execute在执行delete update insert 返回int值,返回的对数据里的数据修改的条数
result = self.__cursor.execute(sql, params)
return result
except (pymysql.MySQLError, pymysql.DatabaseError, Exception) as e:
print("出现数据库访问异常:" + str(e))
self.rollback()
pass
finally:
pass
pass
def fetch(self):
if self.__cursor:
return self.__cursor.fetchall()
pass
def commit(self):
if self.__connection:
self.__connection.commit()
pass
def rollback(self):
if self.__connection:
self.__connection.rollback()
pass
def getLastRowId(self):
if self.__cursor:
return self.__cursor.lastrowid
pass
def close(self):
if self.__cursor:
self.__cursor.close()
if self.__connection:
self.__connection.close()
pass
pass
userdao.py
from dao.basedao import BaseDao
class UserDao(BaseDao):
def findUserByUserName(self,userName):
try:
sql = "select * from user where user_name=%s"
self.getConnection()
self.execute(sql,(userName,))
result = self.fetch()
return result
finally:
self.close()
def findUserByUserId(self, userid):
try:
sql = "select * from user where user_id=%s"
self.getConnection()
self.execute(sql, (userid,