flask的HTTP方法

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参数

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

相关阅读更多精彩内容

友情链接更多精彩内容