Jak mogę wydrukować coś takiego:
{
username = admin
email = admin@localhost
id=42
}
Używając tylko method = ["POST"]
i bez użycia render_template
?
PS: Już go uruchomiłem ["GET"]
Oto mój kod:
from flask import Flask, jsonify, request
app = Flask(__name__)
@app.route("/", methods=["POST"])
def index():
if request.method == "POST":
return jsonify(username="admin",
email="admin@localhost",
id="42")
else:
if request.method == "POST":
return jsonify(username="admin",
email="admin@localhost",
id="42")
if __name__ == "__main__":
app.run()
Dostaję błąd metody 405.
Odpowiedzi:
0 dla odpowiedzi № 1Hej, upewnij się, że końcowe skrypty w html są prawidłowe.
możesz odnosić się do: Kolba - błąd POST 405 Metoda niedozwolona i dokumentacja kolby: http://flask.pocoo.org/docs/0.10/quickstart/
to
<form action="/" method="post">
i to jest to samo to samo, ale inne
<form action="" method="post">
Dostęp do niego bez końcowego ukośnika spowoduje, że Flask przekieruje do kanonicznego adresu URL za pomocą ukośnika końcowego.
Biorąc pod uwagę błąd 405, podejrzewam, że to twój problem. GET jest w porządku, ponieważ zostaniesz przekierowany.
0 dla odpowiedzi nr 2
Spróbuj zwrócić formularz (jak powiedział biobirdman) na żądanie GET. Nie jestem pewien, dlaczego potrzebujesz request.method == "POST"
instrukcja warunkowa. Parametr methods=["POST"]
na trasie powinno wystarczyć.
Spróbuj tego:
from flask import Flask, jsonify, request
app = Flask(__name__)
@app.route("/", methods=["POST"])
def index():
return jsonify(username="admin", email="admin@localhost", id="42")
@app.route("/", methods=["GET"])
def form():
return "<form action="/" method="POST">"
"<input type="submit">"
"</form>"
if __name__ == "__main__":
app.run()