اگر توی جنگو نیاز دارید که به جای یک Text Area خشک و بی روح یک ادیتور کامل داشته باشید (مثلا برای نوشتن بلاگ که به بولت چونت و هایلایت و …. نیاز دارید) میتونید از django-ckeditor-5 استفاده کنید. مستندات خود کتابخونه کامل نحوه نصب و تنظیمات رو گفته و نیازی به توضیح دادن کدش نیست. من قسمت هایی که برای جالب بود رو میگم:
یه کتابخونه کامله که بعد از نصبش و migrate کردن دیتابیس میتونید از فیلدهای جدیدی که اضافه میکنه توی ORM استفاده کنید مثلا به جای استفاده از فیلدهای استاندارد جنگو میشه از CKEditor5Field استفاده کرد
1 |
from django_ckeditor_5.fields import CKEditor5Field |
لازم نیست توی template کاری بکنید چون خود فایلهای استاتیک رو اضافه میکنه و اتوماتیک رندر میکنه.
توی تعریف فرمها میشه از widget هایی که اضافه کرده استفاده کرد. ولی یه بخشی که برای من خیلی جالب بود اینه که من نیاز داشتم از اون فرمهای رندر شده گاهی یه درخواست AJAX به یک route بفرستم و متوجه شدم مثل حالت معمولی نمیشه دیتای textarea رو با JQuery بگیرم و ازش توی request استفاده کنم. گشتم و متوجه شدم که توی تمپلیت ادیتور قابل دسترسی هست و از API هاش میتونم استفاده کنم. مثل کد زیر از editors لیست فیلدهایی که ckeditor بودن رو داشته باشم و با تابع getData() دیتای رندر شده شو بگیرم یعنی دیتایی که فرمت HTML داره و باید توی دیتابیس ذخیره بشه.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<script> function feedback_online(){ var dataString = { 'platform_awareness': $('#id_platform_awareness').val(), 'main_points': editors[0].getData(), 'secondary_points': editors[1].getData(), 'guids_and_recommendations': editors[2].getData() } $.ajax({ type: "POST", url: "/man/documents/feedback/ajax/{{id}}/", data: dataString, success: function(data) { alert(data); } }); return false; } </script> |