Mohssen A Mohssen نشر 18 يناير 2022 أرسل تقرير نشر 18 يناير 2022 أحاول أن أتعلم فلاسك Flask بشكل متقدم من خلال قراءة مشاريع بسيطة مفتوحة المصدر، ووجدت الكود التالي في أحد المشاريع: from flask import Flask, url_for, request import requests app = Flask(__name__) @app.route("/<name>/hello", methods=["POST"]) def hi_person(name): return requests.post(url_for("hello", _external=True), data={"name": name}) @app.route("/hello", methods=["POST"]) def hello(): return 'Hi, ' + request.form["name"] if __name__ == "__main__": app.run(debug=True) ولكن عندما أحاول أن أقوم بعمل طلب إلى المسار http://localhost:5000/mohssen/hello من خلال أداة curl : curl -X POST http://localhost:5000/mohssen/hello يتوقف كل شيء ولا يحدث أي شيء، حتى سطر الأوامر يتوقف ولا تظهر أي نتيجة، قمت بتجربة أدوات أخرى مثل Postman وكانت نفس النتيجة (يظهر الخطأ Could not get response). المشروع يستخدم Flask 0.12 في بيئة إفتراضية virtualenv ما سبب هذا الخطأ وكيف أقوم بحل هذه المشكلة؟ اقتباس
1 Mohamed Abu Abdo نشر 18 يناير 2022 أرسل تقرير نشر 18 يناير 2022 (معدل) المشكلة تكمن حول الرد الذي يعود بعد تنفيذ requests.post حيث تعيد post كائن من النوع ```requests.models.response``` ,بينما يجب أن يكون الرد النهائي للدالة hi person والتى نخاطبها إما str أي سلسلة نصية او json ,يمكننا اعادة أي منهما ولكن التعديل التالي يعيد string من خلال إضافة .text للرد القادم من post. from flask import Flask, url_for, request import requests app = Flask(__name__) @app.route("/<name>/hello", methods=["POST", "GET"])#يسمح لك بالتجربة من المتصفح GET هذه ليست ضرورية لكن اضافة def hi_person(name): result = requests.post(url_for("hello", _external=True), data={"name": name}) return result.text #.text يجب ان يكون الرد اما سلسة نصية أو جسون لهذا أضفنا @app.route("/hello", methods=["POST"]) def hello(): return 'Hi, ' + request.form["name"] if __name__ == "__main__": app.run(debug=True) أما عن سبب إضافة GET فهو إذا أردت تجربة الطلب من خلال المتصفح , ويمكن إجراء الطلب GET و POST من خلال postman أو curl GET curl -X GET http://localhost:5000/ahmed/hello POST curl -X POST http://localhost:5000/glal/hello موفق تم التعديل في 18 يناير 2022 بواسطة Mohammed_Emad 1 اقتباس
السؤال
Mohssen A Mohssen
أحاول أن أتعلم فلاسك Flask بشكل متقدم من خلال قراءة مشاريع بسيطة مفتوحة المصدر، ووجدت الكود التالي في أحد المشاريع:
ولكن عندما أحاول أن أقوم بعمل طلب إلى المسار http://localhost:5000/mohssen/hello من خلال أداة curl :
curl -X POST http://localhost:5000/mohssen/hello
يتوقف كل شيء ولا يحدث أي شيء، حتى سطر الأوامر يتوقف ولا تظهر أي نتيجة، قمت بتجربة أدوات أخرى مثل Postman وكانت نفس النتيجة (يظهر الخطأ Could not get response).
المشروع يستخدم Flask 0.12 في بيئة إفتراضية virtualenv
ما سبب هذا الخطأ وكيف أقوم بحل هذه المشكلة؟
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.