flask的HTTP方法

计算机软件开发 2024-10-6 11:49:21 144 1 来自 中国
python用flask框架写了个简单的增删改查例子,途中遇到点问题,就简单记录一下。
问题一:route()装饰器,可以通过method参数来指定http方法,刚开始我明明指定了method=['POST'],可是执行后,依然会报错,查看提示信息依然是GET方式。
解决:首先我们得要有个页面,渲染时默认用get来打开模板,然后在post进行传参。
如下,可以将同一个页面合并在一起写:
@app.route('/add', methods=['GET', 'POST'])def add():    #  get打开页面    if request.method == 'GET':        return render_template('add.html')    else:        #   获取表单数据        datas = request.form.to_dict()        datas['time'] = time.strftime('%Y-%m-%d %H:%M:%S')        sql = 'insert into message(nick,messages,create_time) Values("%s","%s","%s")' % (            datas['name'], datas['message'], datas['time'])        res = con.execute_edit_sql(sql)        if res:            return redirect('/index')        else:            return redirect('/add')也可以分开写:
@app.route('/add', methods=['GET'])def add():      return render_template('add.html')@app.route('/add', methods=['POST'])      datas = request.form.to_dict()        datas['time'] = time.strftime('%Y-%m-%d %H:%M:%S')        sql = 'insert into message(nick,messages,create_time) Values("%s","%s","%s")' % (            datas['name'], datas['message'], datas['time'])        res = con.execute_edit_sql(sql)        if res:            return redirect('/index')        else:            return redirect('/add')问题二:封装sql语句时,执行完sql语句直接就关闭了数据库连接,导致不能连续打开接口,导致数据库报错
#  源代码    def execute_select_sql(self, sql):        self.cursor.execute(sql)        data = self.cursor.fetchall()        self.con.commit()        #self.cursor.close()        #self.con.close()        return data解决:注释掉关闭连接的语句,主代码直接调用一次即可
request.form.to_dict()  :获取表单数据并转化成数据字典
request.args.get('id')  :获取地址栏?号后的id参数
您需要登录后才可以回帖 登录 | 立即注册
感谢作者分享。
6 天前 回复

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-11-21 17:15, Processed in 0.173292 second(s), 34 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表