【问题标题】:React, Axios and Flask - AttributeError: 'NoneType' object has no attribute 'get'React、Axios 和 Flask - AttributeError: 'NoneType' 对象没有属性 'get'
【发布时间】:2020-01-25 03:52:11
【问题描述】:

我正在尝试通过axios 将我的react 组件中的一些数据发布到我的Flask 服务器,如下所示:

handleSubmitSeeds(event) {
    event.preventDefault();
    const {userId} = this.props
    const data = {
      arabica: this.state.formSeeds
    };
    const url = `${process.env.REACT_APP_WEB_SERVICE_URL}/handle_seeds/${userId}`;
    axios.post(url, data)
      .then((res) => {
        console.log(data);
      })
      .catch((err) => {
      });
  };

在后端:

@seeds_bp.route('/handle_seeds/<user_id>', methods=['GET','POST'])
def handle_seeds(user_id):

    post_data = request.get_json()

    arabica = post_data.get('arabica')

    (...)

但我得到以下回溯:

AttributeError: 'NoneType' object has no attribute 'get'

我错过了什么?

【问题讨论】:

    标签: reactjs flask axios


    【解决方案1】:

    缺少 Content-Type 授权承载的标头。一旦我这样做了:

    var headers = {
              'Content-Type': 'application/json',
              Authorization: `Bearer ${window.localStorage.authToken}`
            }
    

    并像这样传递它:

    axios.post(url, data, headers)
    

    request.get_json() 工作。

    【讨论】:

      【解决方案2】:

      看起来您从 post_data = request.get_json() 返回的任何内容都没有返回您尝试使用 get() 方法的对象类型。

      尝试控制台记录请求对象,看看您是否可以看到附加到它的 JSON 对象。

      【讨论】:

      • 不,get_json 是烧瓶方法
      • 在此处引用此线程:stackoverflow.com/questions/43126956/… 我认为 Axios 会在 POST 请求时自动对 JSON 进行字符串化,因此它可能不会以 JSON 形式通过。
      • 我也尝试过传递headers = {'content-type': 'application/json'} ,但无济于事。
      • 您是否尝试过通过表单 request.form.get('arabica') 访问数据??此时,我只想确定数据是否正在发送到后端的请求对象
      • 尝试像这样传递.post(url,data,{ 'content-type': 'application/json' })
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-08-10
      • 1970-01-01
      • 2014-12-29
      • 2020-06-25
      • 2021-12-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多