一个Flask/反应台有500个错误,但另一个没有?

2024-10-03 21:33:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个烧瓶桌可以很好地存储输入的电子邮件。我想要另一个页面来存储输入的instagrams。所以我基本上把instagram的大部分电子邮件代码都翻了一倍。我有一个表单,但是当我在webapp上输入一些东西时,我得到一个500内部服务器错误。我想我的问题是内容类型可能不是json?是“text/html”吗?我试图改变这一点,但没有成功。我觉得我在初始化表或其他东西时遗漏了一个步骤,而不仅仅是db.create_all()

app.py:

from flask import Flask, jsonify, request, send_from_directory
from flask_sqlalchemy import SQLAlchemy
import datetime
from flask_marshmallow import Marshmallow
from flask_cors import CORS

app = Flask(__name__, static_url_path='', static_folder='frontend/build')
CORS(app)

app.config['SQLALCHEMY_DATABASE_URI']='mysql://root:fakepass@localhost/pobblebonk'

ca@us-cdbr-east-04.cleardb.com/heroku_8caeb1ebf4606b6'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS']= False

db = SQLAlchemy(app)
ma = Marshmallow(app)

class Emails(db.Model):
    id = db.Column(db.Integer, primary_key = True)
    email = db.Column(db.String(120)) 
    ighandle = db.Column(db.String(120)) 


    def __init__(self, email):
        self.email = email

class EmailsSchema(ma.Schema):
    class Meta:
        fields = ('id','email')

class IGHandles(db.Model):
    __tablename__ = 'IGHandles'
    num = db.Column(db.Integer, primary_key = True)
    ighandle = db.Column(db.String(120)) 

    def __init__(self, ighandle):
        self.ighandle = ighandle

class IGHandlesSchema(ma.Schema):
    class Meta:
        fields = ('id','ighandle')



email_schema = EmailsSchema()
emails_schema = EmailsSchema(many=True)

ighandle_schema = IGHandlesSchema()
ighandles_schema = IGHandlesSchema(many=True)

@app.route("/", defaults={'path':''})
def serve(path):
    return send_from_directory(app.static_folder, 'index.html')


@app.route('/get', methods = ['GET'])
def get_emails():
    all_emails = Emails.query.all()
    results = emails_schema.dump(all_emails)
    return jsonify(results)
def get_ighandles():
    all_ighandles = IGHandles.query.all()
    results = ighandles_schema.dump(all_ighandles)

@app.route('/get/<id>', methods = ['GET'])
def post_emails(id):
    results = Emails.query.get(id)
    return email_schema.jsonify(results)
def post_ighandles(id):
    results = IGHandles.query.get(id)
    return ighandle_schema.jsonify(results)

@app.route('/add', methods = ['POST'])
def add_email2():
    email = request.json['email']
    print('add email python')
    entry = Emails(email)
    db.session.add(entry)
    db.session.commit()
    return email_schema.jsonify(entry)


@app.route('/add_ig', methods = ['POST'])
def add_ighandles():
    ighandle = request.json['ighandle']
    entry = IGHandles(ighandle)
    db.session.add(entry)
    db.session.commit()




if __name__ == "__main__":
    app.run(debug=True)

APIService.js将前端连接到后端

export default class APIService {

  static SubmitEmail(body) {
    
    return fetch(`http://localhost:5000/add`, {
      'method':'POST',
      mode: 'cors',
      headers: {
    'Content-Type':'application/json'
      },
      body: JSON.stringify(body)
    })
    .then(resp => console.log("email here"))
    .catch(error => console.log(error))
  }

  static SubmitIG(body) {
    
    return fetch(`http://localhost:5000/add_ig`, {
      'method':'POST',
      mode: 'cors',
      headers: {
    'Content-Type':'application/json'
      },
      body: JSON.stringify(body)
    })
    .then(resp => console.log("ig here"))
    .catch(error => console.log(error))
  }
}

js…我用来输入instagrams的表单

import React, {useState, useEffect} from 'react'
import APIService from '../components/APIService'

function IgersForm() {
  
  const[ighandle, setIGhandle] = useState('')

  useEffect(() => {
    setIGhandle()
  },[])
  
  const submitIG = () => {
    APIService.SubmitIG({ighandle})
    .then(setIGhandle(''))
    .then(resp=> console.log(resp))
    .then(resp=> console.log("hi igers"))
    .then(resp=> console.log({ighandle}))
    //.catch(error => console.log(error))

  }
  return (
    <div>
      <div className = "mb-3">
      <label htmlFor = "ighandle" className = "form-label"></label>
      <input type="text" className="form-control"
      //value = {email|| ''}
      value = {ighandle}
      placeholder = "Please enter instagram handle"
      onChange = {(e) => setIGhandle(e.target.value)}
      />

      <button
      onClick = {submitIG}
      className = "btn btn-success mt-3"
      >Submit</button>
      </div>
    </div>

    )

}

export default IgersForm


最后,我的错误是:

https://imgur.com/a/x8VIFQZ


Tags: fromimportlogaddidappdbreturn