Django: मैं urlpatterns की सूची कैसे देख सकता हूं?


130

मैं वर्तमान urlpatterns को कैसे देख सकता हूं जो "रिवर्स" में देख रहा है?

मैं एक तर्क के साथ एक दृश्य में रिवर्स कॉल कर रहा हूं जो मुझे लगता है कि काम करना चाहिए, लेकिन नहीं। किसी भी तरह से मैं जांच सकता हूं कि मेरा पैटर्न क्या है और क्यों नहीं?



DEBUG मोड चालू करें और डीबग आउटपुट में URLS की सूची देखें?
बोटकोडर

जवाबों:


181

यदि आप अपने प्रोजेक्ट के सभी url की सूची चाहते हैं, तो सबसे पहले आपको django- एक्सटेंशन को स्थापित करने की आवश्यकता है , इसे अपनी वेबसाइट पर इस तरह जोड़ें:

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

और फिर, इस आदेश को अपने टर्मिनल में चलाएं

./manage.py show_urls

अधिक जानकारी के लिए आप दस्तावेज़ की जाँच कर सकते हैं


3
वास्तव में मैं गलत था, यह सुविधा सब के बाद django द्वारा प्रदान नहीं की गई है।
रॉबर्ट

मुझे इससे जो कुछ मिलता है वह हैTypeError: unsupported operand type(s) for +: 'NoneType' and 'str'
पॉल टॉम्बलिन

6
NB: आपको स्थापित करने के बाद django_extensionsअपने को जोड़ना होगाINSTALLED_APPS
Owen

80

इसे इस्तेमाल करे:

from django.urls import get_resolver
get_resolver().reverse_dict.keys()

या यदि आप अभी भी Django 1 पर हैं। *:

from django.core.urlresolvers import get_resolver
get_resolver(None).reverse_dict.keys()

9
यह दृश्य फ़ंक्शंस को लौटाता है,
उरल्स को

3
उरल्स को वापस करने के लिए, इसे इसके बजाय करें: set (v [1] के लिए k, v में get_resolol (कोई नहीं) .reverse_dict.iteritems ())
kloddant

3
या python3 के लिए:set(v[1] for k,v in get_resolver(None).reverse_dict.items())
Private

6
django.core.urlresolversDjango 2.0 में हटा दिया गया था , आयात लाइन की जगहfrom django.urls import get_resolver
hoefling

2
यह अब मेरे लिए काम नहीं कर रहा है, केवल अपनी परियोजना में एक छोटे से उपसमूह को वापस देता है
J__

33

Django> = 2.0 समाधान

मैंने इस पोस्ट में अन्य उत्तरों का परीक्षण किया और वे या तो Django 2.X के साथ काम नहीं कर रहे थे, अपूर्ण या बहुत जटिल। इसलिए, यहाँ मेरा इस पर ध्यान है:

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))

यह कोड सभी URL को प्रिंट करता है, कुछ अन्य समाधानों के विपरीत यह पूर्ण पथ को प्रिंट करेगा और न केवल अंतिम नोड। उदाहरण के लिए:

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

1
अगर मैं url और नाम देखना चाहता हूँ तो मैं कैसे कर सकता हूँ ... क्योंकि मैं अपने परिणाम की तरह दृश्य और पैटर्न का नाम प्राप्त करना चाहता हूँ ... कृपया कैसे?
नाथन इनग्राम

@NathanIngram यह दृश्य URLPattern ऑब्जेक्ट की "कॉलबैक" संपत्ति में संग्रहीत है, इसलिए आप yield acc + [str(l.pattern)]लाइन को बदल सकते हैं yield acc + [str(l.pattern)], l.callback। ध्यान रखें कि यह दृश्य फ़ंक्शन को स्वयं लौटाएगा और एक नाम नहीं
सीज़र कैनासा

मुझे त्रुटि मिलती है: --- >>>> टाइपर्रर: अनुक्रम आइटम 0: अपेक्षित str उदाहरण, सूची मिली
नाथन इनग्राम

@NathanIngram "प्रिंट (''। Join (p))" काम नहीं करेगा क्योंकि यह अब स्ट्रिंग्स की सूची के बजाय ट्यूपल्स की एक सूची है, "प्रिंट ('') को जोड़ने का प्रयास करें। (p [0]))"।
सीज़र कैनासा

22

Django 1.11, पायथन 2.7.6

cd_your_django_project

अजगर प्रबंधन शेल्फ़

फिर निम्नलिखित कोड पेस्ट करें।

from django.conf.urls import RegexURLPattern, RegexURLResolver
from django.core import urlresolvers
urls = urlresolvers.get_resolver()

def if_none(value):
    if value:
        return value
    return ''

def print_urls(urls, parent_pattern=None):
    for url in urls.url_patterns:
        if isinstance(url, RegexURLResolver):
            print_urls(url, if_none(parent_pattern) + url.regex.pattern)
        elif isinstance(url, RegexURLPattern):
            print(if_none(parent_pattern) + url.regex.pattern)

print_urls(urls)

नमूना उत्पादन:

^django-admin/^$
^django-admin/^login/$
^django-admin/^logout/$
^django-admin/^password_change/$
^django-admin/^password_change/done/$
^django-admin/^jsi18n/$
^django-admin/^r/(?P<content_type_id>\d+)/(?P<object_id>.+)/$
^django-admin/^wagtailimages/image/^$
^django-admin/^wagtailimages/image/^add/$
^django-admin/^wagtailimages/image/^(.+)/history/$
^django-admin/^wagtailimages/image/^(.+)/delete/$
^django-admin/^wagtailimages/image/^(.+)/change/$
^django-admin/^wagtailimages/image/^(.+)/$
...

यह वह उत्तर है जो मेरे लिए काम करता था, हालांकि मुझे Noneलाइन में जोड़ना था urls = urlresolvers.get_resolver(None), और मुझे कभी-कभी कुछ URL की शुरुआत में 'कोई नहीं' मिला।
क्रिस

17

सक्रियता पर एक नुस्खा है

import urls

def show_urls(urllist, depth=0):
    for entry in urllist:
        print("  " * depth, entry.regex.pattern)
        if hasattr(entry, 'url_patterns'):
            show_urls(entry.url_patterns, depth + 1)

show_urls(urls.url_patterns)

1
वह अंतिम पंक्ति होनी चाहिए show_urls(urls.url_patterns)
डैनियल क्विन

1
मैं कर रहा हूँ ModuleNotFoundError: No module named 'urls', पता नहीं क्यों?
एलेक्सी

1
@ अलेक्से यह कुछ ऐसा है जो शायद django के साथ करना है 2. क्या आप इसकी पुष्टि कर सकते हैं ताकि मैं उत्तर को अपडेट कर सकूं?
pmav99

मैंने इस कोड test.pyको अपने प्रोजेक्ट के रूट में फाइल में रखा है और यह त्रुटि है, अगर मैं import urlsदुभाषिया में भी करता हूं तो मुझे भी यह त्रुटि मिलती है।
एलेक्सी

यह एक Django 1 बनाम 2 मुद्दा नहीं है: import urlsएक स्थानीय आयात है, इसलिए आपको शायद करने की आवश्यकता है from app_name import urls
आरोन क्लेइन

16

मैं अगले आदेश का उपयोग कर रहा हूं:

(पायथन 3 + Django 1.10)

from django.core.management import BaseCommand
from django.conf.urls import RegexURLPattern, RegexURLResolver
from django.core import urlresolvers


class Command(BaseCommand):

    def add_arguments(self, parser):

        pass

    def handle(self, *args, **kwargs):

        urls = urlresolvers.get_resolver()
        all_urls = list()

        def func_for_sorting(i):
            if i.name is None:
                i.name = ''
            return i.name

        def show_urls(urls):
            for url in urls.url_patterns:
                if isinstance(url, RegexURLResolver):
                    show_urls(url)
                elif isinstance(url, RegexURLPattern):
                    all_urls.append(url)
        show_urls(urls)

        all_urls.sort(key=func_for_sorting, reverse=False)

        print('-' * 100)
        for url in all_urls:
            print('| {0.regex.pattern:20} | {0.name:20} | {0.lookup_str:20} | {0.default_args} |'.format(url))
        print('-' * 100)

उपयोग:

./manage.py showurls

नमूना उत्पादन:

----------------------------------------------------------------------------------------------------
| ^(.+)/$              |                      | django.views.generic.base.RedirectView | {} |
| ^(.+)/$              |                      | django.views.generic.base.RedirectView | {} |
| ^(.+)/$              |                      | django.views.generic.base.RedirectView | {} |
| ^(.+)/$              |                      | django.views.generic.base.RedirectView | {} |
| ^(.+)/$              |                      | django.views.generic.base.RedirectView | {} |
| ^(.+)/$              |                      | django.views.generic.base.RedirectView | {} |
| ^static\/(?P<path>.*)$ |                      | django.contrib.staticfiles.views.serve | {} |
| ^media\/(?P<path>.*)$ |                      | django.views.static.serve | {'document_root': '/home/wlysenko/.virtualenvs/programmerHelper/project/media'} |
| ^(?P<app_label>polls|snippets|questions)/$ | app_list             | apps.core.admin.AdminSite.app_index | {} |
| ^(?P<app_label>activity|articles|badges|books|comments|flavours|forum|marks|newsletters|notifications|opinions|polls|questions|replies|snippets|solutions|tags|testing|users|utilities|visits)/reports/$ | app_reports          | apps.core.admin.AdminSite.reports_view | {} |
| ^(?P<app_label>activity|articles|badges|books|comments|flavours|forum|marks|newsletters|notifications|opinions|polls|questions|replies|snippets|solutions|tags|testing|users|utilities|visits)/statistics/$ | app_statistics       | apps.core.admin.AdminSite.statistics_view | {} |
| articles/(?P<slug>[-\w]+)/$ | article              | apps.articles.views.ArticleDetailView | {} |
| book/(?P<slug>[-_\w]+)/$ | book                 | apps.books.views.BookDetailView | {} |
| category/(?P<slug>[-_\w]+)/$ | category             | apps.utilities.views.CategoryDetailView | {} |
| create/$             | create               | apps.users.views.UserDetailView | {} |
| delete/$             | delete               | apps.users.views.UserDetailView | {} |
| detail/(?P<email>\w+@[-_\w]+.\w+)/$ | detail               | apps.users.views.UserDetailView | {} |
| snippet/(?P<slug>[-_\w]+)/$ | detail               | apps.snippets.views.SnippetDetailView | {} |
| (?P<contenttype_model_pk>\d+)/(?P<pks_separated_commas>[-,\w]*)/$ | export               | apps.export_import_models.views.ExportTemplateView | {} |
| download_preview/$   | export_preview_download | apps.export_import_models.views.ExportPreviewDownloadView | {} |
| ^$                   | import               | apps.export_import_models.views.ImportTemplateView | {} |
| result/$             | import_result        | apps.export_import_models.views.ImportResultTemplateView | {} |
| ^$                   | index                | django.contrib.admin.sites.AdminSite.index | {} |
| ^$                   | index                | apps.core.views.IndexView | {} |
| ^jsi18n/$            | javascript-catalog   | django.views.i18n.javascript_catalog | {'packages': ('your.app.package',)} |
| ^jsi18n/$            | jsi18n               | django.contrib.admin.sites.AdminSite.i18n_javascript | {} |
| level/(?P<slug>[-_\w]+)/$ | level                | apps.users.views.UserDetailView | {} |
| ^login/$             | login                | django.contrib.admin.sites.AdminSite.login | {} |
| ^logout/$            | logout               | django.contrib.admin.sites.AdminSite.logout | {} |
| newsletter/(?P<slug>[_\w]+)/$ | newsletter           | apps.newsletters.views.NewsletterDetailView | {} |
| newsletters/$        | newsletters          | apps.newsletters.views.NewslettersListView | {} |
| notification/(?P<account_email>[-\w]+@[-\w]+.\w+)/$ | notification         | apps.notifications.views.NotificationDetailView | {} |
| ^password_change/$   | password_change      | django.contrib.admin.sites.AdminSite.password_change | {} |
| ^password_change/done/$ | password_change_done | django.contrib.admin.sites.AdminSite.password_change_done | {} |
| ^image/(?P<height>\d+)x(?P<width>\d+)/$ | placeholder          | apps.core.views.PlaceholderView | {} |
| poll/(?P<pk>\w{8}-\w{4}-\w{4}-\w{4}-\w{12})/(?P<slug>[-\w]+)/$ | poll                 | apps.polls.views.PollDetailView | {} |
| ^add/$               | polls_choice_add     | django.contrib.admin.options.ModelAdmin.add_view | {} |
| ^(.+)/change/$       | polls_choice_change  | django.contrib.admin.options.ModelAdmin.change_view | {} |
| ^$                   | polls_choice_changelist | django.contrib.admin.options.ModelAdmin.changelist_view | {} |
| ^(.+)/delete/$       | polls_choice_delete  | django.contrib.admin.options.ModelAdmin.delete_view | {} |
| ^(.+)/history/$      | polls_choice_history | django.contrib.admin.options.ModelAdmin.history_view | {} |
| ^add/$               | polls_poll_add       | django.contrib.admin.options.ModelAdmin.add_view | {} |
| ^(.+)/change/$       | polls_poll_change    | django.contrib.admin.options.ModelAdmin.change_view | {} |
| ^$                   | polls_poll_changelist | django.contrib.admin.options.ModelAdmin.changelist_view | {} |
| ^(.+)/delete/$       | polls_poll_delete    | django.contrib.admin.options.ModelAdmin.delete_view | {} |
| ^(.+)/history/$      | polls_poll_history   | django.contrib.admin.options.ModelAdmin.history_view | {} |
| ^$                   | polls_vote_changelist | django.contrib.admin.options.ModelAdmin.changelist_view | {} |
| publisher/(?P<slug>[-_\w]+)/$ | publisher            | apps.books.views.PublisherDetailView | {} |
| question/(?P<slug>[-_\w]+)/$ | question             | apps.questions.views.QuestionDetailView | {} |
| ^add/$               | questions_answer_add | django.contrib.admin.options.ModelAdmin.add_view | {} |
| ^(.+)/change/$       | questions_answer_change | django.contrib.admin.options.ModelAdmin.change_view | {} |
| ^$                   | questions_answer_changelist | django.contrib.admin.options.ModelAdmin.changelist_view | {} |
| ^(.+)/delete/$       | questions_answer_delete | django.contrib.admin.options.ModelAdmin.delete_view | {} |
| ^(.+)/history/$      | questions_answer_history | django.contrib.admin.options.ModelAdmin.history_view | {} |
| ^add/$               | questions_question_add | django.contrib.admin.options.ModelAdmin.add_view | {} |
| ^(.+)/change/$       | questions_question_change | django.contrib.admin.options.ModelAdmin.change_view | {} |
| ^$                   | questions_question_changelist | django.contrib.admin.options.ModelAdmin.changelist_view | {} |
| ^(.+)/delete/$       | questions_question_delete | django.contrib.admin.options.ModelAdmin.delete_view | {} |
| ^(.+)/history/$      | questions_question_history | django.contrib.admin.options.ModelAdmin.history_view | {} |
| ^setlang/$           | set_language         | django.views.i18n.set_language | {} |
| ^add/$               | snippets_snippet_add | django.contrib.admin.options.ModelAdmin.add_view | {} |
| ^(.+)/change/$       | snippets_snippet_change | django.contrib.admin.options.ModelAdmin.change_view | {} |
| ^$                   | snippets_snippet_changelist | django.contrib.admin.options.ModelAdmin.changelist_view | {} |
| ^(.+)/delete/$       | snippets_snippet_delete | django.contrib.admin.options.ModelAdmin.delete_view | {} |
| ^(.+)/history/$      | snippets_snippet_history | django.contrib.admin.options.ModelAdmin.history_view | {} |
| solution/(?P<pk>\w{8}-\w{4}-\w{4}-\w{4}-\w{12})/(?P<slug>[-_\w]+)/$ | solution             | apps.solutions.views.SolutionDetailView | {} |
| suit/(?P<slug>[-\w]+)/$ | suit                 | apps.testing.views.SuitDetailView | {} |
| tag/(?P<name>[-_\w]+)/$ | tag                  | apps.tags.views.TagDetailView | {} |
| theme/(?P<slug>[-_\w]+)/$ | theme                | apps.forum.views.SectionDetailView | {} |
| topic/(?P<slug>[-_\w]+)/$ | topic                | apps.forum.views.TopicDetailView | {} |
| update/$             | update               | apps.users.views.UserDetailView | {} |
| ^r/(?P<content_type_id>\d+)/(?P<object_id>.+)/$ | view_on_site         | django.contrib.contenttypes.views.shortcut | {} |
| writer/(?P<slug>[-_\w]+)/$ | writer               | apps.books.views.WriterDetailView | {} |
----------------------------------------------------------------------------------------------------

4
ध्यान दें कि डॉक्स आपको उपयोग न करने की सलाह देते हैं print। इसके बजाय उपयोग करें self.stdout.writedocs.djangoproject.com/en/1.10/howto/custom-management-commands
डस्टिन व्याट

मुझे नामस्थानों को देखने / क्रमबद्ध करने और सभी url भागों को देखने की आवश्यकता है, इसलिए इस कमांड को stackoverflow.com/a/42388839/179581
Andrei

1
@Andrei, यदि आपने अपने उत्तर से एक आउटपुट बनाया है, तो यह अन्य उपयोगकर्ताओं को मुझ पर आपकी पद्धति का लाभ देखने की क्षमता देगा
PADYMKO


7
def get_resolved_urls(url_patterns):
    url_patterns_resolved = []
    for entry in url_patterns:
        if hasattr(entry, 'url_patterns'):
            url_patterns_resolved += get_resolved_urls(
                entry.url_patterns)
        else:
            url_patterns_resolved.append(entry)
    return url_patterns_resolved

अजगर प्रबंधन ओरेकल शेल में

import urls
get_resolved_urls(urls.urlpatterns)

4

Django 3.0 में, यह जितना आसान है:

from django.urls import get_resolver
print(get_resolver().url_patterns)

प्रिंटों: [<URLPattern '' [name='home']>, <URLPattern '/testing' [name='another_url']>]


3

मैंने नामस्थान, सभी url भागों, स्वतः-समायोजित स्तंभ चौड़ाई, (नाम स्थान, नाम) द्वारा क्रमबद्ध दिखाने के लिए सेटी की कमान बढ़ा दी है : https://gist.github.com/andreif/263a3fa6e7254297ffee09c25f66b20b20

import sys
from django.core.management import BaseCommand
from django.conf.urls import RegexURLPattern, RegexURLResolver
from django.core import urlresolvers


def collect_urls(urls=None, namespace=None, prefix=None):
    if urls is None:
        urls = urlresolvers.get_resolver()
    _collected = []
    prefix = prefix or []
    for x in urls.url_patterns:
        if isinstance(x, RegexURLResolver):
            _collected += collect_urls(x, namespace=x.namespace or namespace,
                                       prefix=prefix + [x.regex.pattern])
        elif isinstance(x, RegexURLPattern):
            _collected.append({'namespace': namespace or '',
                               'name': x.name or '',
                               'pattern': prefix + [x.regex.pattern],
                               'lookup_str': x.lookup_str,
                               'default_args': dict(x.default_args)})
        else:
            raise NotImplementedError(repr(x))
    return _collected


def show_urls():
    all_urls = collect_urls()
    all_urls.sort(key=lambda x: (x['namespace'], x['name']))

    max_lengths = {}
    for u in all_urls:
        for k in ['pattern', 'default_args']:
            u[k] = str(u[k])
        for k, v in list(u.items())[:-1]:
            # Skip app_list due to length (contains all app names)
            if (u['namespace'], u['name'], k) == \
                    ('admin', 'app_list', 'pattern'):
                continue
            max_lengths[k] = max(len(v), max_lengths.get(k, 0))

    for u in all_urls:
        sys.stdout.write(' | '.join(
            ('{:%d}' % max_lengths.get(k, len(v))).format(v)
            for k, v in u.items()) + '\n')


class Command(BaseCommand):
    def handle(self, *args, **kwargs):
        show_urls()

नोट: स्तंभ क्रम को पाइथन 3.6 में रखा गया है और OrderedDictपुराने संस्करणों में उपयोग करने की आवश्यकता होगी ।

अद्यतन: ऑर्डरडेड के साथ एक नया संस्करण अब django-:s पैकेज में रहता है: https://github.com/5monkeys/django-bananas/blob/master/bananas/management/commands/show/urls.py


1
django.conf.urls से आयात RexxURLPattern, RegexURLResolver django> 2.0 में अधिक मान्य नहीं है, लेकिन मैंने जिस्ट को अनुकूलित किया और अब ठीक है, thx
cisisperer

हाल ही में इस मुद्दे का सामना किया और जिस्ट को अपडेट किया। एक को Django <2.0 पर चलने के लिए पहले के संशोधन का उपयोग करने की आवश्यकता होगी।
आंद्रेई

3

केवल एक यूआरएल में टाइप करें जो आप जानते हैं कि मौजूद नहीं है और सर्वर यूआरएल पैटर्न की एक सूची के साथ एक त्रुटि संदेश लौटाएगा।

उदाहरण के लिए, यदि आप http: // localhost: 8000 / कुछ पर साइट चला रहे हैं

में टाइप करें

http: // localhost: 8000 / कुछ / blahNonsense , और आपका सर्वर यूआरएल खोज सूची को लौटाएगा और इसे ब्राउज़र में प्रदर्शित करेगा


2

Django 2.0 के लिए न्यूनतम समाधान

उदाहरण के लिए, यदि आप एक url की खोज कर रहे हैं जो कि install_apps के पहले ऐप पर है, तो आप इसे इस तरह एक्सेस कर सकते हैं:

from django.urls import get_resolver
from pprint import pprint

pprint(
    get_resolver().url_patterns[0].url_patterns
)

Django 1. के लिए काम करता है * भी अगर आप आयात get_resolverसे django.core.urlresolvers। धन्यवाद Marcio!
फर्नांडो कोस्टा बर्टोल्डी

2

Django 1.8, पायथन 2.7+ बस अपने शेल में इन कमांड को चलाएं। पायथन प्रबंधन शेल को प्रबंधित करता है और निम्नलिखित कोड को निष्पादित करता है।

from django.conf.urls import RegexURLPattern, RegexURLResolver
from django.core import urlresolvers
urls = urlresolvers.get_resolver(None)

def if_none(value):
    if value:
        return value
    return ''

def print_urls(urls, parent_pattern=None):
    for url in urls.url_patterns:
        if isinstance(url, RegexURLResolver):
            print_urls(url, if_none(parent_pattern) + url.regex.pattern)
        elif isinstance(url, RegexURLPattern):
            print(if_none(parent_pattern) + url.regex.pattern)

print_urls(urls)

1
क्या आप अपने उत्तर के बारे में अधिक जानकारी प्रदान कर सकते हैं?
तोषिहरो

1
मैंने अपना उत्तर संपादित कर दिया है, आपको इसे अपने शेल में चलाना है।
आदित्य सैनी

0

आप अपनी परियोजना में प्रत्येक एप्लिकेशन से सभी URL प्रतिमानों को इकट्ठा करने के लिए एक डायनामिक आयात बना सकते हैं, जैसे कि एक सरल विधि:

def get_url_patterns():
    from django.apps import apps

    list_of_all_url_patterns = list()
    for name, app in apps.app_configs.items():
        # you have a directory structure where you should be able to build the correct path
        # my example shows that apps.[app_name].urls is where to look
        mod_to_import = f'apps.{name}.urls'
        try:
            urls = getattr(importlib.import_module(mod_to_import), "urlpatterns")
            list_of_all_url_patterns.extend(urls)
        except ImportError as ex:
            # is an app without urls
            pass

    return list_of_all_url_patterns

list_of_all_url_patterns = get_url_patterns()

मैंने हाल ही में सक्रिय नेविगेशन लिंक दिखाने के लिए टेम्पलेट टैग बनाने के लिए कुछ इस तरह का उपयोग किया है।


0
from django.urls.resolvers import RegexPattern,RoutePattern
from your_main_app import urls

def get_urls():
    url_list = []
    for url in urls.urlpatterns:
        url_list.append(url.pattern._regex) if isinstance(url.pattern, RegexPattern) else url_list.append(url.pattern._route)

    return url_list

यहां your_main_appएप्लिकेशन नाम दिया गया है, जहां आपकी सेटिंग्स फ़ाइल रखी गई है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.