اذهب إلى المحتوى
  • 1

ما هو Slug في جانغو Django؟ ومتى يستخدم؟

Amer Abdallah

السؤال

قرأت في توثيق جانغو Django في جزء Glossary عن شيء يُسمى "slug". لست متأكدًا تمامًا من ماهيته، لكنني أعلم أن له علاقة بعناوين URL. كيف ومتى من المفترض أن يتم استخدام slug؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

يأتي مصطلح "slug" من المقالات والصحف وهو الاسم الغير رسمي الذي يُطلق على قصة أو مقالة أثناء عملية الإنتاج. أما في جانغو يتم استخدام حقل slug لتخزين وإنشاء عناوين URL صالحة لصفحات الويب التي تم إنشاؤها ديناميكياً. بشكل عام باستخدام البيانات التي تم الحصول عليها بالفعل. على سبيل المثال ، يستخدم slug عنوان المقالة لإنشاء عنوان URL.

<title> damn cat </title>
<content> Wonderful movie </content>
<slug> Wonderful-movie </slug>

يمكنك إنشاء slug من خلال SlugField:

slug = models.SlugField(max_length=90)


وينصح بإنشاء الرابط الثابت عن طريق تابع، بالنظر إلى العنوان أو جزء آخر من البيانات، بدلاً من تعيينه يدوياً. مثال:

# الآن لنفرض لدينا النموذج التالي
class art(models.Model):
    title = models.CharField(max_length=59)
    content = models.TextField(max_length=1900)
    slug = models.SlugField(max_length=50)
#وباسم ذو معنى URL يمكنك الإشارة إلى هذا الكائن بعنوان
# :بالشكل URL بحيث يكون عنوان  Article.id على سبيل المثال استخدام 
www.slu.com/art/23
# أو 
www.slu.com/art/damn cat
#20% لذا يجب استبدالها ب URL وبما أن المسافات غير مسموحة في عناوين 
www.example.com/art/damn%20cat
#slugأما باستخدام 
# - يمكننا استبال الفراغات ب
www.example.com/article/damn-cat

كما يمكنك استخدام التابع slugify لاستخدام ال slug كعنوان:

from django.template.defaultfilters import slugify
class art(models.Model):
    title = models.CharField(max_length=90)
    def slug(self):
        return slugify(self.title)

كما يمكنك استخدام الوسيط unique=True إذا أردت جعله فريداً:

slug = models.SlugField(max_length=90, unique=True)

 

تم التعديل في بواسطة Ali Haidar Ahmad
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

ال slug هو طريقة لانشاء url له معنى وصالح فى نفس الوقت, كمثال اذا كان لدينا صفحة html تعبر عن مقالة كالشكل التالى

<title> The 46 Year Old Virgin </title>
<content> A silly comedy movie </content>
<slug> the-46-year-old-virgin </slug>

وانشأنا لها django model بالشكل الاتى:

class Article(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField(max_length=1000)
    slug = models.SlugField(max_length=40)

ماهى افضل طريقة لانشاء url يشير لهذا الموديل؟ 

اولا من الممكن ان نصل له عن طريق الid فيصبح الurl كالشكل التالى

www.example.com/article/23

او من الممكن ان نصل له عن طريق attribute الslug كما بالشكل التالى

www.example.com/article/The 46 Year Old Virgin

ولكن تلك الطريقة فيها مشكلة لان المسافات غير مسموح بها فى الurl فبالتالى يتغير شكل الurl ليصبح كالاتى:

www.example.com/article/The%2046%20Year%20Old%20Virgin

ومن الواضح اخى الفاضل ان كلا الطريقتين اعلى ليسو جيدين , فاول طريقة ستجد ان الurl لا يعطى وصفا عما يتضمنه فانت لا تستطيع ان تعرف عما تتكلم المقالة بمجرد معرفة الid اللذى هو 23

والطريقة الثانية ليست جيدة ايضا لانها صعبة القراءة وتؤذى العين,وهنا يأتى دور الslug

فنجعل عنوان الurl مثل حقل الslug فيكون كالتالى

www.example.com/article/the-46-year-old-virgin

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 1 ساعة قال Ziyad Hasan:

يستخدم  "slug" في تحسين search engine optimization للموقع لكي يظهر في اعلي نتائج البحث و تسخدمه لكي تنشئ unique url لكل صفحه

مثال لو لديك منتج يسمي iphone فسوف تقوم slug بانشاء اسم مميز له باضافه رقم 1-iphone و يصبح الرابط مميز و seo friendly بدلا من استخدام id للمنتج في الرابط

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 15 ساعة قال Omry Isa:

كيف ممكن استعمل ال slug بالعربي؟

نستخدم slugs بالعربي بنفس الطريقة التي تستخدم بها بالإنجليزية.

1- تعريف SlugField في موديل:

from django.db import models

class Article(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    slug = models.SlugField(unique=True)

2- توليد الـ Slug:

عندما تقوم بإنشاء مقالة جديدة، نستخدم مكتبة Django slugify لتوليد الـ slug بناءً على عنوان المقالة باللغة العربية، وعليك تثبيت المكتبة إذا لم تكن مثبتة بالفعل:

pip install django-utils-six

ثم، في مكان ما في مشروعك، يمكنك استخدام slugify كما يلي:

from django.utils.text import slugify

article = Article.objects.create(title="عنوان المقالة", content="محتوى المقالة")
article.slug = slugify(article.title)
article.save()

3- استخدام الـ Slug في العنوان URL:

استخدم قيمة الـ slug لبناء عناوين URL كالتالي:

urlpatterns = [
    path('articles/<slug:article_slug>/', views.article_detail, name='article_detail'),
]

وعند زيارة عنوان URL /articles/عنوان-المقالة/، سيتم توجيه المستخدم إلى عرض تفاصيل المقالة.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...