python flask server 接收post数据注意

这篇具有很好参考价值的文章主要介绍了python flask server 接收post数据注意。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前面写了两篇文章,结果错误不少,经过修正,改了很多错误

1 跨域

加上以下两条

from flask_cors import CORS
from flask_cors import cross_origin

以下让整个全景跨域

CORS(app, supports_credentials=True)

2 secret_key

加上secret_key 防止session 报错

app.secret_key='kdjklfjkd87384hjdhjh'

3 接收python 数据

@app.route('/project/add', methods=['POST'])
def add_entry():
    #if not session.get('logged_in'):
    #    abort(401)
    print("data recv !!!!!!!!!!!!!!!!!!!!!!")
    data=request.get_data()
    print("data recv 2!!!!!!!!!!!!!!!!!!!!!!")
    data = data.decode('utf-8')
    data=json.loads(data)
    print("data recv 3!!!!!!!!!!!!!!!!!!!!!!")
    pname = data.get('projectname')
    num= data.get('projectname')
    memo = data.get('memo')
    g.db.execute('insert into project(projectname,picnum,memo) values (?,?,?)',
    #             [request.form['projectname'], request.form['picnum'],request.form['memo'] ])
                  [pname,num,memo])
    g.db.commit()
    flash('New project was successfully posted')
    return "{'ret':ok}"

其中需要data.decode 去解码utf-8 编码,去掉前面的 b 这个多余的字节。

4 改成非develop

去掉flask develop的警告

    server = pywsgi.WSGIServer(('0.0.0.0', 5000), app)
    server.serve_forever()

这样要把gevent装上
pip install gevent

5 发送端测试

发送端使用以前的代码,注意的是:发送的时候写上 json = data,不要写成 data = data,以前我的写法是错误的。

import json
import requests
import time
headers = {'Content-Type': 'application/json'}
data = {
    "projectname":"four screen",
    "picnum":8,
    "memo":"test"
}
try:
	r = requests.post("http://127.0.0.1:5000/project/add", json=data, headers=headers)
	print(r.text)
except requests.exceptions.ConnectionError:
	print('connectionError')	
time.sleep(1)

6 代码清单

以下代码清单错误减去了不少,数据库增加数据正常
python flask server 接收post数据注意,python,http,http协议,python,flask,开发语言,http
服务端和测试客户端正常
python flask server 接收post数据注意,python,http,http协议,python,flask,开发语言,http文章来源地址https://www.toymoban.com/news/detail-565015.html


from __future__ import with_statement
from contextlib import closing  
import sqlite3
from flask import Flask, request, session, g, redirect, url_for, \
   abort, render_template, flash,jsonify
from flask_cors import CORS
from flask_cors import cross_origin
import json
from gevent import pywsgi
# configuration
DATABASE = './project.db'
DEBUG = True



app = Flask(__name__)
app.config.from_object(__name__)

app.config.from_envvar('FLASKR_SETTINGS', silent=True)
app.secret_key='kdjklfjkd87384hjdhjh'

CORS(app, supports_credentials=True)
def connect_db():
   return sqlite3.connect(app.config['DATABASE'])


def init_db():
   with closing(connect_db()) as db:
       with app.open_resource('db.sql',"r") as f:
           #str = f.read()
           #print(str)
           db.cursor().executescript(f.read())
       db.commit()


@app.before_request
def before_request():
   g.db = connect_db()


@app.after_request
def after_request(response):
   g.db.close()
   return response


@app.route('/')
def show_first():
   return "this is a test"

@app.route('/project', methods=['GET'])
def show_project():
   cur = g.db.execute('select id,projectname,picnum,memo,created from project order by id desc')

   entries = [dict(id=row[0], projectname=row[1],picnum= row[2],memo=row[3],created=row[4]) for row in cur.fetchall()]
   return jsonify(entries)

@app.route('/project/add', methods=['POST'])
def add_entry():
   #if not session.get('logged_in'):
   #    abort(401)
   print("data recv !!!!!!!!!!!!!!!!!!!!!!")
   data=request.get_data()
   print("data recv 2!!!!!!!!!!!!!!!!!!!!!!")
   #get_Data = get_Data.decode('utf-8')
   data = data.decode('utf-8')
   data=json.loads(data)
   print("data recv 3!!!!!!!!!!!!!!!!!!!!!!")
   pname = data.get('projectname')
   num= data.get('projectname')
   memo = data.get('memo')
   g.db.execute('insert into project(projectname,picnum,memo) values (?,?,?)',
   #             [request.form['projectname'], request.form['picnum'],request.form['memo'] ])
                 [pname,num,memo])
   g.db.commit()
   flash('New project was successfully posted')
   return "{'ret':ok}"
   #return redirect(url_for('show_first'))


@app.route('/project/del/<id>', methods=['POST'])
#@cross_origin(supports_credentials=True)
def del_entry():
   #if not session.get('logged_in'):
   #    abort(401)
   g.db.execute('delete from project where id = ?',[id])
   g.db.commit()
   flash('project was successfully delete')
   return redirect(url_for('show_first'))


#需要登录或者单点登录的时候把以下代码准备加上
@app.route('/login', methods=['GET', 'POST'])
def login():
   error = None
   if request.method == 'POST':
       if request.form['username'] != app.config['USERNAME']:
           error = 'Invalid username'
       elif request.form['password'] != app.config['PASSWORD']:
           error = 'Invalid password'
       else:
           session['logged_in'] = True
           flash('You were logged in')
           return redirect(url_for('show_first'))
   return render_template('login.html', error=error)

 #需要登录或者单点登录的时候把以下代码准备加上
@app.route('/logout')
def logout():
   session.pop('logged_in', None)
   flash('You were logged out')
   return redirect(url_for('show_first'))


if __name__ == '__main__':
   init_db()
   server = pywsgi.WSGIServer(('0.0.0.0', 5000), app)
   server.serve_forever()

到了这里,关于python flask server 接收post数据注意的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Http中post/get请求参数接收

    Http请求报文示例图如下:   ①是请求方法,GET和POST是最常见的HTTP方法,除此以外还包括DELETE、HEAD、OPTIONS、PUT、TRACE。不过,当前的大多数浏览器只支持GET和POST,Spring 3.0提供了一个HiddenHttpMethodFilter,允许通过_method的表单参数指定这些特殊的HTTP方法(实际上还是通过POST提

    2024年01月25日
    浏览(75)
  • Python-Python高阶技巧:HTTP协议、静态Web服务器程序开发、循环接收客户端的连接请求

    当前版本号[20231114]。 版本 修改说明 20231114 初版 1.1 网址的概念 网址又称为URL,URL的英文全拼是(Uniform Resoure Locator),表达的意思是 统一资源定位符 ,通俗理解就是网络资源地址。 URL地址:https://www.itcast.com/18/1122/10/E178J2O4000189FH.html 1.2 URL的组成 域名 : IP地址的别名 ,它是用

    2024年02月04日
    浏览(63)
  • 嵌入式Qt中实现http服务接收POST请求

    嗨喽,大家好!以下知识点做个简单记录分享给小伙伴们! 首先我们来理解几个概念 “ WebSocket服务器和HTTP服务器是两种不同的服务器类型,它们在协议、连接方式和通信模式等方面有所区别。 协议:HTTP服务器使用HTTP协议进行通信,而WebSocket服务器使用WebSocket协议。HTTP协

    2024年02月20日
    浏览(40)
  • 使用python get post数据 http https

    目的比较简单,测试,使用python来提交数据是非常简洁的,修改代码也容易,除了做人工智能,本身也是一个非常好的测试端工具 一个简单的示例程序,将 headers 内容置为’application/json’,为了演示,每次修改提交数据number的值,向服务器程序的8000端口提交data,for 循环提交

    2024年02月16日
    浏览(53)
  • Nginx接收Http协议请求转发使用Https协议

    公司使用阿里的apigateway,规定不太友好,同是SIT环境,A系统的SIT1环境居然不能调用B系统的SIT2环境的接口。因为各个系统之间部署的SIT环境数量不同A系统可能只有1套,B系统可能有8套,这样的话,可能会随时切换调用B系统的环境,管理员不允许,于是想着用Nginx做下转发。

    2024年02月08日
    浏览(62)
  • python 发送和接收post请求

    bottle是python的web框架,只需要引用一个 .py 文件即可,点击去下载页

    2024年02月15日
    浏览(34)
  • http协议中的GET和POST请求

    📄 个人主页: 你这个小猪 ✨ 个人简介:Java领域新星菜鸟,随时准备跑路的大二学生 🔥 精品专栏:筹划ing 🌈 个人名言:技术的深度和广度缺一不可 目录  格式介绍  演示 请求数据总共分为三部分内容,分别是请求行、请求头、请求体 求行: HTTP请求中的第一行数据,请

    2023年04月16日
    浏览(41)
  • 基础知识:HTTP协议以及GET请求和POST请求的区别

    qq对于HTTP协议,做Web编程的开发人员再熟悉不过了。  不论是前端Html页面通过Ajax还是客户端通过 HttpClient 又或服务端与服务端之间的Rest请求,这都需要通过Http协议完成请求  。在HTTP协议中,我们最常用的是GET和POST请求,对于这两个方法,应该是最基础的东西。但是,两

    2024年02月08日
    浏览(94)
  • Springboot 接收POST、json、文本数据实践

    1,基本的接收方法 (1)下面样例 Controller 接收 form-data 格式的 POST 数据: (2)下面是一个简单的测试样例: 2,参数没有传递的情况 (1)如果没有传递参数 Controller 将会报错,这个同样有如下两种解决办法: 使用 required = false 标注参数是非必须的。 使用 defaultV

    2024年02月05日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包