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

كيفية طباعة كل المسارات المستخدمه في تطبيق جانغو Django؟

Mohssen A Mohssen

السؤال

أريد أن أقوم بعرض كل المسارات Routes الموجودة في تطبيق مبني بإستخدام جانغو Django، شيء مثل ما يقوم به Laravel من خلال الأمر:

php artisan route:list

هل هناك طريقة للحصول على كل المسارات؟

 

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

Recommended Posts

  • 1

لعرض كل المسارات الموجودة في تطبيق مبني باستخدام إطار العمل جانغُو توجَد عدة طُرق لذلك منها :

  • باستخدام الدالة get_resolver
    python manage.py shell
    >>> from django.core.urlresolvers import get_resolver# نقوم باستدعاء الدالة
    >>> set(v[1] for k,v in get_resolver().reverse_dict.items()) #يقوم بعرض كل المسارات

     

  • باستخدام التطبيق django-extensions: بعد تنصيب التطبيق باستخدام

    pip install django-extensions

    وإضافته إلى قائمة التطبيقات في ملف الإعدادات

    INSTALLED_APPS = (
    	...
    	'django_extensions',
    	...
    )

    يُمكنك طبع المسارات باستخدام الأمر

    python manage.py show_urls

     

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

  • 0

يمكنك القيام بذلك أيضاً من خلال الكود التالي (لنسخ جانغو Django >= 2.0)، حيث يقوم هذا الكود بطباعة جميع عناوين URL، وعلى عكس بعض الحلول الأخرى، فإنه سيطبع المسار الكامل وليس فقط العقدة الأخيرة:

from django.conf import settings
from django.urls import URLPattern, URLResolver
urlconf = __import__(settings.ROOT_URLCONF, {}, {}, [''])
def list_urls(lis, acc=None):
    if acc is None:
        acc = []
    if not lis:
        return
    l = lis[0]
    if isinstance(l, URLPattern):
        yield acc + [str(l.pattern)]
    elif isinstance(l, URLResolver):
        yield from list_urls(l.url_patterns, acc + [str(l.pattern)])
    yield from list_urls(lis[1:], acc)
for p in list_urls(urlconf.urlpatterns):
    print(''.join(p))

ويكون الخرج بالشكل:

admin/
admin/login/
admin/logout/
admin/password_change/
admin/password_change/done/
admin/jsi18n/
admin/r/<int:content_type_id>/<path:object_id>/
admin/auth/group/
admin/auth/group/add/
admin/auth/group/autocomplete/
admin/auth/group/<path:object_id>/history/
admin/auth/group/<path:object_id>/delete/
admin/auth/group/<path:object_id>/change/
admin/auth/group/<path:object_id>/
admin/auth/user/<id>/password/
admin/auth/user/
... etc, etc

 

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

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...