SlugField در جنگو و بررسی اسلاگ فارسی

SlugField در جنگو و بررسی اسلاگ  فارسی

اسلاگ ها (Slug) در واقع یک فیلد از مدل جنگو هستند که به کمک آن ها شما میتوانید Url های سئو پسندانه ای در جنگو پیاده کنید در این مقاله از وبسایت sunlearn در ابتدا به بررسی اسلاگ(Slug) میپردازیم و همچنین آموزش ایجاد کردن یک اسلاگ و url فارسی را در جنگو(ِDjango) بررسی خواهیم کرد

SlugField چیست ؟ و چگونه از آن باید استفاده کنیم؟

به این مثال ها دقت کنید  "آموزش-مقدماتی-فریمورک-جنگو" یا "Django-Free-Course"

فرمتی که در بالا مشاهده میکنید فرمت استاندارد برای یک اسلاگ میباشد درواقع اسلاگ ها متن هایی هستن که میتوانند شامل اعداد و حروف و یک سری از کارکتر های خاص باشند توجه داشته باشید که اسلاگ ها Space را قبول نمیکنند یعنی شما نباید بین هر کلمه خود فاصله قرار دهید و بهتر است به جای آن از کارکتر های - یا _ استفاده کنید پس با این وجود متن " آموزش فریمورک جنگو" برای یک اسلاگ نامعتبر است از دیگر مزایای اسلاگ ها میتوان به این اشاره کرد که Url های شما را خوانا تر و قابل درک تر برای کاربر و موتور های جست وجو خواهد کرد

به نمونه ی زیر دقت کنید:

اسلاگ فارسی در جنگو | سان لرن

در این مثال ما یک پروژه داریم که صفحه ی جزئیات مقاله های آن به صورت بالا میباشد و در url آیدی مقاله را دریافت کرده ایم و سپس در فایل views.py آن مقاله را بر اساس id دریافت و به کاربرنمایش داده ایم همانطورکه دقت میکنید این فرمت شاید برای برنامه نویسان فرمت خوب و قابل درک باشد اما در نمایش و ظاهر زیاد کاربر پسند نیست 

برای اینکه بتوانیم Slug خود را پیاده کنیم نیاز است یک سری تغییرات در مدل مقالات خود لحاظ کنیم و فیلد Slug را به آن اضافه و بر اساس Slug یک مقاله را دریافت کرده و به کاربر نمایش دهیم 

محتویات جدید فایل models,py:

حال نیاز است که تغییراتی بر روی مدل مقاله ی خود دهیم و از فیلد SlugField استفاده کنیم و یک فیلد با نام slug در آن ایجاد کنیم و مقدار unique آن را برابر True قرار میدهیم

مدل جدید برای اسلاگ در جنگو | سان لرن

پس از انجام تغییرات حال نیاز است دستورات زیر را برای اعمال تنظیمات در دیتابیس اجرا کنیم

python manage.py makemigrations
python manage.py migrate

محتویات جدید فایل views.py:

حال نیاز است تا در فایل views.py مقاله ی خود را بر اساس slug دریافت کرده و از آنجایی که مقدار unique در فیلد اسلاگ برابر True است اجازه ی ثبت شدن اسلاگ های تکراری را نمیدهد و هر مقاله یک اسلاگ به خصوص و منحصر به فرد برای خود دارد

محتویات فایل views.py | سان لرن

محتویات جدید فایل Urls.py:

پس از آن نیاز است تا تغییراتی نیز در فایل urls.py خود لحاظ کنیم که هر زمان کاربر بخواهد یک مقاله را دریافت کند نیاز است که در آدرس slug آن مقاله را نیز ارسال کند تا ما بتوانیم آن مقاله را دریافت و به آن نمایش دهیم در اینجا در url خود یک slug با نام article_slug قرار میدهیم که به عنوان ورودی باید از کاربر دریافت کند

    path('articles/detail/<slug:article_slug>/', article_detail, name='article_detail')

از آنجایی که slug یک فیلد از فیلد های جنگویی است پس در url باید بفهمانیم که جنگو یک متن دریافت نکند و حتما بررسی کند یک slug باشد به صورت زیر قرار میدهیم

<slug:article_slug>

کلمه کلیدی slug  و در ادامه ی آن اسمی که برای آن اسلاگ میخواهید بگذارید که در فایل views.py باید آن را دریافت و بر اساس آن مقاله را برگردانید

تنظیمات url جدید برای slug در جنگو | سان لرن

نمایش مقاله با استفاده از اسلاگ:

حال به آدرس صفحه جزئیات مقاله رفته و به جای آیدی اسلاگی که ایجاد کرده ایم را به آن میدهیم همانطور که مشاهده میکنید حال دیگر مقاله شما بر اساس Slug دریافت شده و یک Url سئو پسندانه دارید ! 

نمایش خروجی اسلاگ | سان لرن

اسلاگ(Slug) فارسی در جنگو(Django):

پس از انکه معنای اسلاگ را فهمدید حال نیاز است که نحوه پیاده سازی اسلاگ فارسی در جنگو را فرابگیرید اگر دقت کنید شما نمیتوانید اسلاگ فارسی  درSlugField ذخیره کنید برای اینکار شما در ابتدا باید فیلد اسلاگ خود را اصلاح کرده و پس از آن url خود را هم اصلاح کنید پس همراه سان لرن باشید

شما برای ذخیره عبارات فارسی در SlugField باید مقدار allow_unicode=True را درون این فیلد قرار دهید و سپس وارد پنل ادمین شوید و یک اسلاگ فارسی برای مقاله ی خود ست کنید برای مثال ما در اینجا "آموزش-جنگو-رایگان" را قرار دادیم

slug = models.SlugField(unique=True, allow_unicode=True)

جال نیاز است تغییراتی را در urls.py نیز اضافه کنید و به جای استفاده از path از re_path در جنگو استفاده کنید re_path این امکان را میدهد که شما url های خود را بر اساس Regex پیاده کنید اگر با Regex آشنا نیستید پیشنهاد میکنم به این مقاله سر بزنید Regex در پایتون اما اگر آشنا هم نیستید اشکالی ندارد و فقط کافی است Regex که برای شما قرار داده ایم را به url خود در re_path اضافه کنید و re_path را هم به urls.py خود ایمپورت کنید

    re_path(r'detail/(?P<article_slug>[-\w]+)/', article_detail, name='article_detail')

محتویات جدید فایل Urls.py برای اسلاگ فارسی:

اسلاگ فارسی در جنگو | سان لرننمایش خروجی با اسلاگ فارسی در جنگو:

حال خروجی ما به صورت زیر میباشد و پروژه ما از اسلاگ و آدرس های فارسی نیز برای جزئیات مقالات استفاده میکند

نمایش خروجی برای اسلاگ فارسی در جنگو | سان لرن

جمع بندی:

در این مقاله ما با SlugField در جنگو و نحوه ی کار آن آشنا شدیم و مشاهده کردید که چقدر میتواند برای پروژه های شما مهم باشد و شما باید به عنوان یک برنامه نویس جنگو قادر با پیاده سازی اسلاگ های شخصی سازی شده با استفاده از Regex نیز باشید که ما هم یک نمونه Regex برای اسلاگ فارسی در نظر گرفتیم و خروجی آن را مشاهده کردید امیدورام این مطلب برای شما عزیزان کاربردی بوده باشد و سان لرن را به دوستان خود معرفی کنید همچنین میتوانید در آموزش رایگان و  پروژه محور فریمورک جنگو از سان لرن هم شرکت کنید

نظرات

نظر خود را اینجا بگذارید

برای درح نظر ابتدا وارد شوید !