Flask, écrire dans un fichier les infos reçus via "POST"
Bonjour,
Je ne comprends pas pourquoi quand je lance ce code:
from flask import Flask, request
app = Flask(__name__)
@app.route('/', methods=['POST'])
def server():
data = request.get_json()
with open("db_game.py", "w") as f:
f.write(data)
... et qu'après je lance le code suivant :
import requests as rq
import json
BASE = "http://flayme.pythonanywhere.com/"
response = rq.post(BASE, json.dumps({"data": "test"}))
... il n'y a rien qui s'affiche dans le dossier db_game.py.
J'utilise flask sur pythonanywhere, et quand je vais sur mon site ça m'écrit :
405 Method Not Allowed
Method Not Allowed
The method is not allowed for the requested URL.
Merci d'avance pour votre aide
- Flask, écrire dans un fichier les infos reçus via "POST"
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
3 réponses
Bonjour,
D'après cette discussion, ce pourrait dû au / en trop à la fin de la déclaration de la variable BASE. As-tu essayé ?
Bonne chance
bonjour,
as-tu fait fonctionner l'exemple "hello world"?
Si je compare ton code à cet exemple, j'ai l'impression qu'il y manque plusieurs éléments essentiels.
L'exemple "hello world" marche:
l'exemple "hello world":
from flask import Flask
app = Flask(__name__)
@app.route('/', methods=['GET','POST'])
def server():
return "Hello world"
résultat sur la page web:
Hello world
résultat sur le programme suivant:
import requests import json URL = "http://flayme.pythonanywhere.com" response = requests.get(URL) print(response.content)
b'Hello world'
C'est donc mon programme qui marche pas.
Comment le faire fonctionner (je suis un débutant en Flask)
Ceci fonctionne chez moi:
import flask
app = flask.Flask(__name__)
@app.route('/', methods=['POST'])
def server():
data = flask.request.get_json()
print("data:",data)
return "bien reçu: " + data
app.run(host='0.0.0.0', port=81)
import requests
import json
d=json.dumps({"un": "deux"})
response = requests.post("http://127.0.0.1:81", json=d)
print (response.text)
Avec ton programme je reçois aussi le "bien reçu: {"un": "deux"}"
Mais comment je fais pour stocker cela dans un fichier texte?
J'ai essayé ce code mais ça ne marche pas:
import flask
app = flask.Flask(__name__)
@app.route('/', methods=['POST'])
def server():
data = flask.request.get_json()
with open("db_game.txt", "a") as f:
f.write(data)
print("data:",data)
return "bien reçu: " + data
Celui-ci non plus :
import flask
app = flask.Flask(__name__)
@app.route('/', methods=['POST'])
def server():
data = flask.request.get_json()
with open("db_game.txt", "w") as f:
f.write(data)
print("data:",data)
return "bien reçu: " + data
Pourquoi ça ne marche pas, comment je peux faire?
Est-ce que tu peux tester mon code et me dire si ça écrit dans ton fichier texte.
- Le fichier reste vide
- Oui
- Oui:
print("start")
with open("db_game.txt", "w") as f:
f.write("test")
print('finish')
Ce programme écrit bien dans le fichier mais il faut attendre que python charge (sur pythonanywhere), je pense que le problème vient donc de pythonanywhere.
Connaissez-vous des sites pour héberger mon site programme flask gratuitement ?
import requests import json URL = "http://flayme.pythonanywhere.com" PARAMS = '{"data":"test"}' response = requests.post(url=URL, json=PARAMS) print(response.content)reponse.content renvoie :
Je pense que ça vient de mon programme Flask ou de pythonanywhere (comme le dit l'erreur)