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
- Comment ouvrir un 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 ?
reponse.content renvoie :
Je pense que ça vient de mon programme Flask ou de pythonanywhere (comme le dit l'erreur)