redirect user to a login form python

السلام عليكم
عملت بال HTML
<html>
<body>
<form action = "http://localhost:27017/login"method = "POST">
<p>Name:</p>
<p><input type = "text" name = "username" placeholder="Username"/></p>
<p>Phone No.:</p>
<p><input type="tel" Phone= "Phone" placeholder="Phone"/></p>
<p><input type = "submit" value = "submit"/></p>
</form>
</body>
</html>
و بال PyMongo
هنا حطيت الداتا
from pymongo import MongoClient
if __name__ == '__main__':
client = MongoClient('localhost', 27017)
db = client['mongoDatabaseDemo']
collection_user = db['login']
new_login = collection_user.insert_many(
[
{
'name':'Ali',
"Phone No": '0551873725'
},
{
"name":"Ahmad",
"Phone No": '0566138249'
},
{
'name':'Mohammed',
"Phone No": '0505274618'
},
{
"name":"Hadeel",
"Phone No": '0504726381'
}
]
)
والمشكله هنا في ال Python Code
from flask import Flask, redirect, url_for, request
app = Flask(__name__)
@app.route('/success/<name>')
def success(name,Phone):
return 'welcome %s' %name
@app.route('/login',methods = ['POST', 'GET'])
def views():
if request.method == 'POST':
name = request.form['name']
Phone = request.form['Phone']
return redirect(url_for('success',name = name, Phone = Phone))
else:
name = request.args.get('name')
Phone = request.args.get('Phone')
return redirect(url_for('success',name = name, Phone = Phone))
if __name__ == '__main__':
app.run(debug = True)
اللي ابغا اسويهه انو ادخل الاسم ورقم الجوال
المشكله اني جديده على البايثون ف ماعرفت ايش الغلط
ساعد بالإجابة
"إن في قضاء حوائج الناس لذة لا يَعرفها إلا من جربها، فافعل الخير مهما استصغرته فإنك لا تدري أي حسنة تدخلك الجنة."
الإجابات (3)

الخطا الأول في كود HTML
<input type="tel" Phone= "Phone" placeholder="Phone"/>
الخطأ هو وضعك ل Phone="Phone" يجب ان يكون name="Phone" i هكذا :-
<input type="tel" name="Phone" placeholder="Phone"/>
-------------------
الخطأ الثاني في كود الفلاسك عشان يكون بعلمك انتي كتبتي :-
name = request.form['name']
وبرضو هنا :-
name = request.args.get('name')
وانتي كاتبه بكود الHTML
<input type = "text" name="username" placeholder="Username"/>
الخطا بكود البايثون فلاسك انك جعلتي يأخذ متغير ك اسم برامتر غير موجود اصلا
الحل عن طريك تغير name الى username :-
name = request.form['username']
ونفس الشيء بالنقطة الثانية اللي ذكرتها لك
name = request.args.get('username')
---------------
الخطأ الثالث اللي بيجيك : عدم المعالجة الصحيحة للبرامترات POST
redirect(url_for('success',name = name, Phone = Phone))
name = name -> ماراح يستجيب للأسم اللي ادخلتيه بسبب هالسطر
بعد التعديل:-
return redirect(url_for('success',username = username, Phone = Phone))
اتمنى ان هذا الحل
اذا واجهتي مشكلة اخرى فصليها كتابيا وبالصور عشان نقدر نساعدك

علاوة على إجابة أخي @1337r00t
لا أرى أي استخدام لمعطيات الطلب request arguments في ال query string بحكم إن الطلب من نوع POST على مسار ال login
ولا يوجد تحويل redirect لنفس المسار لمعالجة هذه المعطيات، لذلك لا فائدة من استخدام request.args
الخلل بنظري عدم ضبط التسلسل المنطقي للطلبات requests من مسار login إلى مسار success مع الأخذ بالاعتبار نوع الطلب POST,GET .

هذا التسلسل الصحيح للانتقال من مدخلات النموذج Form إلى مسار الوجهة.
لم أضمن جزئية قواعد البيانات pymongo لأن القصاصة لم تشمل إضافة أو استعلام عن البيانات بعد تعبئتها بالكود.
from flask import Flask, redirect, request, url_for
login_form = '''
<html>
<body>
<form action="/login" method="POST">
<p>Name:</p>
<p><input type="text" name="username" placeholder="Username"/></p>
<p>Phone No.:</p>
<p><input type="tel" name="phone" placeholder="Phone"/></p>
<p><input type="submit" value="submit"/></p>
</form>
</body>
</html>
'''
app = Flask(__name__)
@app.route('/')
def index():
return "<a href='/login'>Login</a>"
@app.route('/success')
def success():
name = request.args.get('name')
phone = request.args.get('phone')
return 'Welcome {}, Your phone number is {}'.format(name or 'Guest', phone)
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
name = request.form.get('username')
phone = request.form.get('phone')
return redirect(url_for('success', name=name, phone=phone))
else:
return login_form
if __name__ == '__main__':
app.run(debug=True)
لايوجد لديك حساب في عالم البرمجة؟
تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !