Ich übe das Schreiben eines Rest API in Flask, und ich möchte einen Benutzernamen als Sitzungsvariable speichern, und es in jeder Route zugänglich haben. Ich möchte nur mit diesem Programm über die Befehlszeile über curl interagieren.Flask Routing Probleme
from flask import Flask, Response, session, request, url_for, redirect
import json
app = Flask(__name__)
app.secret_key = 'blabla'
@app.route('/')
def index():
print 'Inside index route'
if 'username' in session:
username = session['username']
print 'Logged in as {}'.format(username)
return Response(response='Logged In\n', status=200, mimetype='text')
else:
print 'Not logged in'
return Response(response='Not Logged In\n', status=200, mimetype='text')
@app.route('/login', methods=['GET', 'POST'])
def login():
print 'Inside login route'
if request.method == 'POST':
session['username'] = json.loads(request.data)['username']
print session['username']
return redirect(url_for('index'))
@app.route('/logout')
def logout():
session.pop('username', None)
return redirect(url_for('index'))
if __name__ == '__main__':
app.run(debug=True)
Wenn ich die Website locken mit:
curl -X POST -H 'Content-Type: application/json' http://127.0.0.1:5000/login -d '{"username": "mdito"}'
bekomme ich die Ausgabe:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>Redirecting...</title>
<h1>Redirecting...</h1>
<p>You should be redirected automatically to target URL: <a href="/">/</a>. If not click the link.
Auf der Serverseite Ich bin Mit:
Inside login route
mdito
Wenn ich bin auf die Index-URL umleiten, warum "Inside Index Route" n ot erscheinen auf der Serverseite? Und warum wird "Angemeldet" nicht an den Benutzer zurückgegeben?
'curl' wird standardmäßig nicht Weiterleitung folgen. Sie sollten 'curl-L' verwenden – Sraw