项目实训第一周02

项目实训第一周02(7.1)

工作概要:初步搭建框架,实现前后端通信和后端的数据库访问与读取工作。

(1)前后端通信
在实现前后端通信中,借用了之前自己实现项目中的一些思路,在Vue中提前封装好ajax,前端通信时通过调用ajax方法即可,定义如下:

//封装ajax
export default function ajax(url='',params={},type='GET'){
  let promise;
  return new Promise(((resolve, reject) => {
    //1.判断请求方式
    if ('GET'===type){
      //1.1拼接字符串
      let str = '';
      Object.keys(params).forEach((value,index) => {
        if (index+1===Object.keys(params).length){
          str+=value+'='+params[value];
        }else{
          str+=value+'='+params[value]+'&';
        }
      });
      //1.2完整路径
      url+='?'+str;
      //1.3发送get请求
      promise = axios.get(url);
    }else if('POST'===type){
      //1.3发送post请求
      promise = axios.post(url,params);
    }
    //2.返回请求结果
    promise.then((response)=>{
      resolve(response.data);
    }).catch((error)=>{
      reject(error);
    });
  }))
}

后端响应通过装饰器规定路径和响应方式,需要注意的是,需要解决跨域的问题,否则前端不会按照期待的结果进行显示,解决方法如下:

from flask_cors import CORS  # 引入声明
app = Flask(__name__)
CORS(app, resources=r'/*')  #解决跨域

考虑到后面实现过程中需要大量使用json,在此处记录一下在Flask中关于json的使用方式。一种方式是使用jsonify(),另一种方法是使用json.dumps(),示例如下:

# 第一种方式
jsonify({'user':'root','password':'123'},{'user':'kiro','password':'0000'})

# 第二种方式
data = {
    'name' : 'myname',
    'age' : 100,
}
json_str = json.dumps(data)

(2)Flask连接与读取数据库
经过大量资料查阅,python中对数据库的使用方法较多,为了使用SQL原生语句,本项目决定使用sqlite数据库,在app.py文件中提前定义好数据库连接方法和执行语句获得结果集方法,当定义响应方法时直接调用这两个方法就可以。

# 数据库连接
def get_db():
    # sqlite数据中连接直接使用数据库名称,这与sqlite数据库的创建有关系
    db = sqlite3.connect('dbtest.db')

    db.row_factory = sqlite3.Row
    return db
# 获得结果集
def query_db(query, args=(), one=False):
    db = get_db()
    cur = db.execute(query, args)
    db.commit()
    rv = cur.fetchall()
    db.close()
    return (rv[0] if rv else None) if one else rv

定义好这两个方法之后,后面就可以直接使用query_db方法执行sql语句,获得结果集进行处理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值