Django URLs: طريقة إنشاء عناوين الصفحات في Django

11 مايو، 2023 * تيتو 4 تك

Django هو إطار عمل للويب يستخدم Python كلغة برمجة. يسمح Django للمطورين بسرعة تطوير تطبيقات الويب ذات الأداء العالي باستخدام أساليب برمجية بسيطة ومنطقية. إحدى الميزات المهمة في Django هي نظام URL الذي يسمح للمستخدمين بالتفاعل مع تطبيق الويب عبر الروابط.

 

 

ما هو URL؟

عنوان URL هو عنوان ويب. يمكنك رؤية عنوان URL في كل مرة تقوم فيها بزيارة موقع ويب - يكون مرئيًا في شريط عنوان المتصفح. (نعم، 127.0.0.1:8000 هو عنوان URL، و https://tito4tech.com هو أيضًا عنوان URL).

تحتاج كل صفحة على الإنترنت إلى عنوان URL الخاص بها. بهذه الطريقة يعرف تطبيقك ما يجب أن يظهره للمستخدم الذي يفتح عنوان URL هذا. في Django، نستخدم ما يسمى URLconf (تكوين URL). URLconf عبارة عن مجموعة من الأنماط التي سيحاول Django مطابقتها مع عنوان URL المطلوب للعثور على العرض أو View الصحيح.

 

ما هي Django URLs؟

Django URLs هي عبارة عن نظام لإدارة عناوين صفحات الموقع وربطها بوظائف في التطبيق. يتيح Django للمطورين تعريف عناوين URL عن طريق الاستخدام السهل لمسارات (Paths) والأنماط (Patterns)، مما يسهل إلى حد بعيد تحديداً كيف يتم توجيه المستخدمين إلى صفحات معينة عندما يطلبون URL محددًا.

 

كيف تعمل عناوين URL في Django؟

لنفتح ملف mysite / urls.py في محرر الأكواد الذي تختاره ونرى كيف يبدو:

 

"""mysite URL Configuration
[...]
"""
from django.contrib import admin

from django.urls import path


urlpatterns = [

    path('admin/', admin.site.urls),

]

 

كما ترون، لقد وضع Django بالفعل شيئًا هنا من أجلنا.

تسمى السطور بين علامات الاقتباس الثلاثية  (''' أو """)  docstrings - يمكنك كتابتها في أعلى ملف أو طريقة لوصف ما تفعله. لن يتم تشغيلها بواسطة Python.

عنوان URL الخاص بالمسؤول أو Admin، موجود هنا بالفعل:

 

    path('admin/', admin.site.urls),

 

يعني هذا السطر أنه لكل عنوان URL يبدأ بـ / admin، سيجد Django عرضًا مطابقًا. في هذه الحالة، نقوم بتضمين الكثير من عناوين URL الخاصة بالمسؤولين بحيث لا يتم حزمها كلها في هذا الملف الصغير - إنها أكثر سهولة للقراءة وأنظف.

 

إنشاء عنوان URL الأول الخاص بك على Django

حان الوقت لإنشاء عنوان URL الأول الخاص بنا. نريد أن تكون "/http://127.0.0.1:8000" هي الصفحة الرئيسية لمدونتنا، وأن تعرض قائمة بالمشاركات. نريد أيضًا الحفاظ على ملف mysite / urls.py نظيفًا ، لذلك سنقوم باستيراد عناوين URL من تطبيق المدونة الخاص بنا إلى ملف mysite / urls.py الرئيسي. أضف سطرًا يقوم باستيراد blog.urls. ستحتاج أيضًا إلى تغيير السطر من django.urls ... لأننا نستخدم وظيفة التضمين هنا، لذلك ستحتاج إلى إضافة هذا الاستيراد إلى السطر.

يجب أن يبدو ملف mysite / urls.py الآن على النحو الآتي:

 

from django.contrib import admin

from django.urls import path, include


urlpatterns = [

    path('admin/', admin.site.urls),

    path('', include('blog.urls')),

]

 

سيعيد Django الآن توجيه كل ما يأتي إلى "/http://127.0.0.1:8000" إلى blog.urls ويبحث عن مزيد من الإرشادات هناك.

 

إنشاء ملف لروابط التطبيق أو blog.urls

قم بإنشاء ملف جديد فارغ باسم urls.py في دليل المدونة ، وافتحه في محرر التعليمات البرمجية. ثم أضف هذين السطرين الأولين:

 

from django.urls import path

from . import views

 

نحن هنا نستورد مسار وظيفة Django، وكل وجهات نظرنا من تطبيق المدونة. (ليس لدينا أي شيء بعد، لكننا سنصل إلى ذلك قريباً)

بعد ذلك، يمكننا إضافة نمط عنوان URL الأول:

 

urlpatterns = [

    path('', views.post_list, name='post_list'),

]

 

كما ترى، نقوم الآن بتعيين طريقة عرض تسمى post_list إلى عنوان URL الجذر. سيتطابق نمط عنوان URL هذا مع سلسلة فارغة، وسيتجاهل محلل عنوان URL لـ Django اسم المجال (على سبيل المثال، /http://127.0.0.1:8000) الذي يسبق مسار URL الكامل. سيخبر هذا النمط Django أن views.post_list هو المكان المناسب للذهاب إليه إذا دخل شخص ما إلى موقع الويب الخاص بك على العنوان "/http://127.0.0.1:8000".

الجزء الأخير، 'name= 'post_list ، هو اسم عنوان URL الذي سيتم استخدامه لتعريف طريقة العرض أو View. يمكن أن يكون هذا هو نفس اسم العرض، ولكن يمكن أيضًا أن يكون شيئًا مختلفًا تمامًا. سنستخدم عناوين URL المسماة لاحقًا في المشروع، لذلك من المهم تسمية كل عنوان URL في التطبيق. يجب أن نحاول أيضًا أن نجعل أسماء عناوين URL فريدة وسهلة التذكر.

 

إذا حاولت زيارة /http://127.0.0.1:8000 الآن، فستجد نوعًا من رسالة "صفحة الويب غير متوفرة". هذا لأن الخادم لم يعد يعمل. ألق نظرة على نافذة وحدة التحكم بالخادم لمعرفة السبب. وهذا مثال علي رسالة الخطأ التي سوف تراها: 

 

 return _bootstrap._gcd_import(name[level:], package, level)

  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import

  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load

  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked

  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked

  File "<frozen importlib._bootstrap_external>", line 850, in exec_module

  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed

  File "/Users/tito/tit4tech/blog/urls.py", line 5, in <module>

    path('', views.post_list, name='post_list'),

AttributeError: module 'blog.views' has no attribute 'post_list'

 

تعرض وحدة التحكم الخاصة بك خطأً، ولكن لا تقلق - إنها مفيدة جدًا في الواقع: تخبرك أنه لا توجد سمة "post_list". هذا هو اسم العرض (View) الذي يحاول Django إيجاده واستخدامه ، لكننا لم ننشئه بعد. في هذه المرحلة، لن يعمل رابط /admin/ أيضًا. إذا رأيت رسالة خطأ مختلفة، فحاول إعادة تشغيل خادم الويب. للقيام بذلك، في نافذة وحدة التحكم التي تقوم بتشغيل خادم الويب، قم بإيقافه بالضغط على Ctrl + C (مفتاحا التحكم و C معًا). في نظام Windows، قد تضطر إلى الضغط على Ctrl + Break. ثم تحتاج إلى إعادة تشغيل خادم الويب عن طريق تشغيل أمر python manager.py runserver.

كان هذا مثالاً بسيطاً على كيفية إنشاء عنوان URL في Django. يمكن للمطورين استخدام عدد كبير من الميزات المتاحة في Django URLs لتعريف عناوين URL مخصصة وتحقيق توجيهات معقدة وفعالة للمستخدمين.

التسميات