مرحباً جميعاً
المهمة المطلوبة
بإمكانك الإطلاع على المهمة المطلوبة من هنا
بإمكانك الإطلاع على المهمة المطلوبة من هنا
سلام
اين يجب كتابة هذا الكود
عند فتح الصفحة, يجب عليك تمرير البيانات في دالة render_template بهذا الشكل:
elif request.method == 'GET':
post = post_store.get_by_id(id)
return render_template('post-update.html', post=post)
هذه محاولتي استاذ ياسر لكن لا يتم التعديل
أهلا سارة
وجدت نقطتين من إطلاعي على الأكواد:
@app.route('/posts/update/<int:id>', methods = ['GET', 'POST'])
def post_update(id):
if request.method == 'POST':
update_fields = {
'photo_url': request.form['photo_url'],
'name': request.form['name'],
'body': request.form['body']
}
post_store.update(id, update_fields)
return redirect(url_for('home'))
if request.method == 'GET':
post = post_store.get_by_id(id)
print('hi')
return render_template('post-update.html', post=post)
لاحظي أن السطر return redirect(url_for('home'))
ليس مضمن مع الـ if
يعني الصحيح أن تكتبيه بهذا الشكل:
@app.route('/posts/update/<int:id>', methods = ['GET', 'POST'])
def post_update(id):
if request.method == 'POST':
update_fields = {
'photo_url': request.form['photo_url'],
'name': request.form['name'],
'body': request.form['body']
}
post_store.update(id, update_fields)
return redirect(url_for('home'))
if request.method == 'GET':
post = post_store.get_by_id(id)
print('hi')
return render_template('post-update.html', post=post)
الأمر الثاني هو مجرد خطأ مطبعي بسيط:
<form action="{{ url_for('post_update) }}" method="POST">
لاحظي post_update علامة التنصيص غير مغلقة, المفروض url_for('post_update')
جربي هذه الأمور وأخبريني كيف جرى الأمر
صححت لكن مازال الأمر كما هو
نسخت المشروع على pycharm وجربته وظهرت لي هذه الرسالة
لاحظي السطر:
Could not build url for endpoint ‘post_update’. Did you forget to specify values [‘id’]?
والذي يعني أنه بقي أيضاً تمرير الـ id الخاص بالـ post في هذه الدالة:
url_for('post_update')
انتظر حلك
لقد أضفت هذا السطر لكن لم يعمل
<form action="{{ url_for('post_update', post.id) }}" method="POST">
تاكدي من اعادة تشغيل السيرفر لانني جربت الموضوع
هل الكود الي كتبتو صحيح
عندما أعدت تشغيل السيرفر ظهر لي الخطا التالي
File “C:\Users\MOUFIDA\PycharmProjects\POSTYTEST\templates\post-update.html”, line 10, in top-level template code
TypeError: url_for() takes 1 positional argument but 2 were given
127.0.0.1 - - [09/Apr/2019 10:58:12] “GET /posts/update/1 HTTP/1.1” 500 -
يجب ان تقومي بتحديد اسم المتغير الذي سيتم تمريره داخل دالة url_for
id=post.id
تقصد هكذا
<form action="{{ url_for('post_update', id=post.id) }}" method="POST">
شكرا استاذ تمت العملية بنجاح
استاذ لدي بعض المشاكل أريد منك أن تعمل لي فيديو عن كيفية تسلسل الأوامر والإنتقال بين تنفيذ الأوامؤ من main والى index وخاصة وكيف انادي على الأمر " method="POST"
سامحني تعبتك معي
بالتاكيد ساقوم باضافة درس حولها
عمل رائع كالعادة يا اسماء