مشاركة حلول: تعديل المنشورات


#21

@YaserAlnajjar
هل يمكنك أن تشرحلي لماذا تمت اضافة

id=post.id 

فنحن لم نستخدمها داخل الفورم انا فهمت كل شيء الا هذه لكم تكن واضحة لدي كفاية
مع محبتي


#22

بالتاكيد، الامر وما فيه ان رابط تحديث المنشور عرفناه كالتالي

@app.route(’/post/update/int:id

يعني احنا نقول /post/update/ لكن متبوع بال id المميز الخاص بالمنشور، لنعرف ماهو المنشور الذي سنقوم بتحديثه.

لهذا السبب لازم نمرر ال id من داخل ال template (صفحة html) باستعمال الدالة url_for.

نفس الامر مع رابط الحذف post/update متبوع بال id


#23

ونحن ناخذ ال id الخاص بالمنشور من template الرئيسي حين ما نضغط على الزر edit ثم نمرره لمن؟


#24

تمرره للجزء GET من هذه الدالة

بدورها تظهر صفحة تعديل المنشور.

وحينما تضغط على زر submit ترسل الطلب على POST لنفس الدالة.


#25

شكرا لقد اتضحت الصورة العملية تحتاج للتركيز والفهم، لأن الذي حصل عبارة عن عدة خطوات مترابطة ومتسلسلة
فحين ضغطنا على زر edit قام هذا الزر بنقلنا إلى ال view post_update وأبعثنا معه ال id الخاص بالمنشور ولأن نوع الطلب GET قام بتنفيذ الشرط المتعلق به وهو:

elif request.method == 'GET':
        post = p.get_by_id(id)
        return render_template('post_update.html',post = post)

وهذا بدوره يقوم ببعث بيانات المنشور من ضمنها ال id لل template post_update فتضهر لنا الصفحة ومعها البيانات الخاصة بالمنشور
وحين نضغط على الزر حفظ فأنه مرتبط بالحدث :

<form action="{{url_for('post_update',id=post.id)}}" method="POST">

وهذا يعود لينفذ ال view post_update حاملأ معه ال id وينفذ الشرط الأول لأنه من النوع post

لقد اطلت كنني أحببت ان اشرح كي أتأكد بأنني فهمت الصورة بشكل صحيح


#26

نعم بالضبط هذا هو ما يحصل :wink:


#27

#28

مرحباً

تم إضافة درس جديد في ورشة عمل تطبيق مشابه للفيسبوك يوضح اللبس الحاصل في كيف تعمل آلية الحذف والتعديل:

https://coretabs.net/classroom/backend/عمل-تطبيق-مشابه-للفيسبوك/صفحات-الويب-الديناميكية/آلية-عمل-حذف-المنشورات-وتعديلها

@Adetech
@yahya-alshammout
@saraweb
@asmaa_salih
@sohep
@SamerElhamdo

في حال ما زال أي شيء غير واضح, سأكون سعيد بتوضيحه :wink: