في Django، يمكن استخدام التعبيرات العادية (regex) لتحديد عناوين URL التي يمكن معالجتها بواسطة مسارات أو طرق.
المسار
يمكن استخدام التعبيرات العادية في معلمات path
لمسار جانغو لتحديد القواعد التي يجب اتباعها لعناوين URL التي يمكن معالجتها بواسطة المسار. على سبيل المثال، لتحديد مسار يمكنه معالجة عناوين URL التي تبدأ بـ /articles/
وتنتهي بـ /
أو /edit/
، يمكنك استخدام التعبير العادي التالي:
1 | path('articles/<slug>/', views.article_detail, name='article_detail') |
سيؤدي هذا المسار إلى مطابقة عناوين URL التالية:
/articles/my-article/
/articles/my-article/edit/
re_path
يمكن أيضًا استخدام التعبيرات العادية في معلمات re_path
لمسار Django لتحديد القواعد التي يجب اتباعها لعناوين URL التي يمكن معالجتها بواسطة المسار. على سبيل المثال، لتحديد مسار يمكنه معالجة عناوين URL التي تبدأ بـ /articles/
وتنتهي بـ /
أو /edit/
، يمكنك استخدام التعبير العادي التالي:
1 | re_path(r'^articles/(?P<slug>[\w-]+)/$', views.article_detail, name='article_detail') |
سيؤدي هذا المسار إلى مطابقة عناوين URL التالية:
/articles/my-article/
/articles/my-article/edit/
الاختلافات بين المسار وre_path
يمكن استخدام التعبيرات العادية في كل من معلمات path
و re_path
لمسار Django. ومع ذلك، هناك بعض الاختلافات الرئيسية بين الاثنين:
- المسار هو أسهل في الاستخدام، ولكنه أقل مرونة من
re_path
. - re_path يدعم مجموعة متنوعة من القواعد المعقدة، والتي يمكن استخدامها لإنشاء مسارات أكثر قوة.
أمثلة
فيما يلي بعض الأمثلة لاستخدام التعبيرات العادية في عناوين URL لـ Django:
- لتحديد مسار يمكنه معالجة عناوين URL التي تبدأ بـ
/articles/
وتنتهي بـ/
أو/edit/
، يمكنك استخدام التعبير العادي التالي
1 | path('articles/<slug>/', views.article_detail, name='article_detail') |
لتحديد مسار يمكنه معالجة عناوين URL التي تبدأ بـ /articles/
وتنتهي بـ /
أو /edit/
، يمكنك استخدام التعبير العادي التالي:
1 | re_path(r'^articles/(?P<slug>[\w-]+)/$', views.article_detail, name='article_detail') |
لتحديد مسار يمكنه معالجة عناوين URL التي تبدأ بـ /articles/
وتنتهي بـ /
أو /edit/
، يمكنك استخدام التعبير العادي التالي:
1 | re_path(r'^articles/(?P<slug>[\w-]+)/(?:edit|view)/$', views.article_detail, name='article_detail') |
لتحديد مسار يمكنه معالجة عناوين URL التي تبدأ بـ /products/
وتحتوي على سلسلة من الأحرف اللاتينية، يمكنك استخدام التعبير العادي التالي:
1 | re_path(r'^products/(?P<name>[\w-]+)/$', views.product_detail, name='product_detail') |
لتحديد مسار يمكنه معالجة عناوين URL التي تبدأ بـ /users/
وتحتوي على رقم، يمكنك استخدام التعبير العادي التالي:
1 | re_path(r'^users/(?P<id>\d+)/$', views.user_detail, name='user_detail') |
ليست هناك تعليقات:
إرسال تعليق