The view function that will process the request accepts both GET and POST request methods. The endpoint '/add' is used in this case, though it could have been anything that differentiated it from the arena endpoint:
@app.route('/nba/api/v0.1/arena/add', methods=['GET', 'POST'])
def add_arenas():
form = AddForm(request.form)
form.name.data = "New Arena"
form.longitude.data = -121.5
form.latitude.data = 37.8
if request.method == "POST":
arena = Arena()
arena.name = request.form['name']
arena.latitude = float(request.form['latitude'])
arena.longitude = float(request.form['longitude'])
arena.geom = 'SRID=4326;POINT({0} {1})'.format(arena.longitude, arena.latitude)
session.add(arena)
data = [{"type": "Feature", "properties":{"name":arena.name},
"geometry":{"type":"Point",
"coordinates":[round(arena.longitude,6), round(arena.latitude,6)]},}]
return jsonify({'added':'success',"type": "FeatureCollection","features":data})
return render_template('addarena.html', form=form)
Once the button is pushed, the data is submitted. The view function will determine what to do based on the request method—if it is a POST request, the data submitted in the form will be used to create a new arena object, and the session manager will save the object, adding it to the database.