Vraag Cast Flask-vormwaarde in int


Ik probeer de postgegevens in een kolf te krijgen

    @app.route('/getpersonbyid', methods = ['POST'])
    def getPersonById():
        personId = (int)(request.form['personId'])
        print personId

Ik stuur de gegevens "personId" via POST in RESTClient. Maar ik krijg het resultaat niet; Ik ontvang in plaats daarvan een 400 Bad Request-fout.

Is er een fout in mijn code? Zo ja, hoe krijg ik specifieke gegevens wanneer de aanvraaggegevens via POST zijn.


41
2017-09-23 10:25


oorsprong


antwoorden:


U wilt terugkeer jouw personId waarde; het afdrukken naar de console zal niet helpen in een webapplicatie:

@app.route('/getpersonbyid', methods = ['POST'])
def getPersonById():
    personId = int(request.form['personId'])
    return str(personId)  # back to a string to produce a proper response

De haakjes rond int zijn zinloze ruis, trouwens, ze zijn niet nodig in Python en worden in dit geval genegeerd door de parser.

Ik neem aan dat je iets zinnigs doet met de personId waarde in de weergave; anders gebruiken int() op de waarde is een beetje zinloos.

U kunt ook de MultiDict.get() methode om de waarde voor u te laten omzetten:

personId = request.form.get('personId', type=int)

Nu personId wordt ingesteld op een geheel getal, of  None als het veld niet aanwezig is in het formulier of niet kan worden geconverteerd naar een geheel getal.


47
2017-09-23 10:29