জাঙ্গো: আমি কীভাবে urlpatterns এর একটি তালিকা দেখতে পারি?


130

"বিপরীত" সন্ধান করা বর্তমান urlpatterns আমি কীভাবে দেখতে পারি?

আমি এমন যুক্তি দিয়ে বিপরীতে কল করছি যা আমার মনে হয় কাজ করা উচিত, তবে তা হয় না। যেভাবেই আমি সেখানে কী আছে তা পরীক্ষা করতে পারি এবং কেন আমার প্যাটার্নটি তা নয়?



DEBUG মোডটি চালু করুন এবং ডিবাগ আউটপুটটিতে URL গুলির তালিকাটি দেখুন?
নৌকা কোডার

উত্তর:


181

আপনি যদি আপনার প্রকল্পের সমস্ত url এর একটি তালিকা চান তবে প্রথমে আপনাকে জ্যাঙ্গো-এক্সটেনশানগুলি ইনস্টল করতে হবে , এটি আপনার সেটিংসে এটি যুক্ত করুন:

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

এবং তারপরে, আপনার টার্মিনালে এই কমান্ডটি চালান

./manage.py show_urls

আরও তথ্যের জন্য আপনি ডকুমেন্টেশন চেক করতে পারেন


3
আসলে আমি ভুল করেছিলাম, এই বৈশিষ্ট্যটি জ্যাঙ্গো পরে সরবরাহ করে না।
রবার্ট

এর থেকে আমি যা পেয়েছি তা হ'লTypeError: unsupported operand type(s) for +: 'NoneType' and 'str'
পল টম্বলিন

6
এনবি: আপনাকে ইনস্টল করার পরে django_extensionsআপনার যুক্ত করতে হবেINSTALLED_APPS
ওভেন

80

এটা চেষ্টা কর:

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

অথবা আপনি যদি এখনও জ্যাঙ্গো ১ এ থাকেন তবে * *:

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

9
এটি ইউআরএলগুলি নয়, দর্শন ফাংশনটি ফিরিয়ে দেয়
রোনেন নেস

3
(ট, get_resolver (কিছুই নয়) .reverse_dict.iteritems মধ্যে v () জন্য v [1]) সেট: এটা URL গুলি আসতে আছে করতে, পরিবর্তে এই কাজ
kloddant

3
বা পাইথন 3 এর জন্য:set(v[1] for k,v in get_resolver(None).reverse_dict.items())
ব্যক্তিগত

6
django.core.urlresolversfrom django.urls import get_resolver
জাজানো

2
এটি এখন আমার জন্য কাজ করছে না, কেবলমাত্র আমার প্রকল্পের ইউআরএলগুলির একটি ক্ষুদ্র উপসেট ফিরিয়ে দেয়
J__

33

জ্যাঙ্গো> = 2.0 সমাধান

আমি এই পোস্টে অন্যান্য উত্তরগুলি পরীক্ষা করেছি এবং তারা জ্যাঙ্গো ২ এক্স এর সাথে কাজ করছে না, অসম্পূর্ণ বা খুব জটিল। অতএব, এই আমার গ্রহণ করা হয়:

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

1
ইউআরএল এবং ভিউয়ের নাম পেতে চাইলে আমি কীভাবে করতে পারি ... কারণ আমাকে নিজের ফলাফলের মতো দেখতে প্যাটার্নের নাম এবং প্যাটার্ন পেতে চাই ... কীভাবে?
নাথান ইঙ্গ্রাম

@ নাথানআইগ্রামগ্রাম ভিউটি ইউআরএল প্যাটার্ন অবজেক্টের "কলব্যাক" বৈশিষ্ট্যে সঞ্চিত আছে, যাতে আপনি yield acc + [str(l.pattern)]লাইনটি এতে পরিবর্তন করতে পারেন yield acc + [str(l.pattern)], l.callback। মনে রাখবেন যে এটি দৃশ্য ফাংশনটি নিজেই ফিরিয়ে দেবে এবং কোনও নাম নয়
সিজার কানাসা

আমি ত্রুটি পেয়েছি: --- >>>> টাইপ এরর: সিকোয়েন্স আইটেম 0: প্রত্যাশিত স্ট্রান্স উদাহরণ, তালিকা পাওয়া গেছে
নাথান ইঙ্গ্রাম

@ নাথানআইগ্রামগ্রাম "মুদ্রণ (''। যোগ দিন (পি))" কাজ করবে না কারণ এটি এখন স্ট্রিংগুলির তালিকার পরিবর্তে টিপলগুলির একটি তালিকা, "মুদ্রণ (''। জয়েন (পি [0]))" চেষ্টা করুন।
সিজার কানাসা

22

জ্যাঙ্গো 1.11, পাইথন 2.7.6

সিডি থেকে_আপনার_জানগো_প্রজেক্ট

পাইথন ম্যানেজ.পি শেল

তারপরে নিম্নলিখিত কোডটি পেস্ট করুন।

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)এবং কিছু ইউআরএল শুরুর সময় আমি মাঝে মাঝে 'কিছুই না' পেয়েছিলাম।
ক্রিস

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
@ অ্যালেক্সা এটি এমন কিছু যা সম্ভবত জ্যাঙ্গো ২ এর সাথে করার আছে আপনি কি দয়া করে এটি নিশ্চিত করতে পারেন যাতে আমি উত্তরটি আপডেট করতে পারি?
pmav99

আমি এই কোডটি ফাইলটিকে test.pyআমার প্রকল্পের মূলের মধ্যে রেখেছি এবং এই ত্রুটিটিও রয়েছে, আমি import urlsযদি দোভাষীর সাথে করি তবে আমিও এই ত্রুটিটি পেয়েছি ।
আলেক্সি

এটি জাজানো 1 বনাম 2 ইস্যু নয়: এটি import urlsএকটি স্থানীয় আমদানি, সুতরাং আপনার সম্ভবত এটি করা দরকার from app_name import urls
অ্যারন ক্লেইন

16

আমি পরবর্তী কমান্ডটি ব্যবহার করছি:

(পাইথন 3 + জ্যাঙ্গো 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
ডাস্টিন ওয়াইয়াট

আমাকে নেমস্পেসগুলি বাছাই-বাছাই করে সমস্ত ইউআরএল অংশগুলি দেখার দরকার ছিল, তাই stackoverflow.com/a/42388839/179581
আন্দ্রে

1
@ আন্দ্রেই, যদি আপনার উত্তর থেকে কোনও আউটপুট তৈরি হয় তবে এটি অন্য ব্যবহারকারীদের আমার উপর আপনার পদ্ধতির সুবিধা দেখার ক্ষমতা দেয়
প্যাডেমেকো


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

জ্যাঙ্গো 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/263a3fa6e7c425297ffee09c25f66b20

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

দ্রষ্টব্য: কলাম অর্ডার পাইথন ৩.6 এ রাখা হয়েছে OrderedDictএবং পুরানো সংস্করণগুলিতে একটি ব্যবহার করা প্রয়োজন ।

আপডেট: অর্ডারডিক্টের সাথে একটি নতুন সংস্করণ এখন জ্যাঙ্গো packages প্যাকেজে বাস করে: https://github.com/5monkeys/django-bananas/blob/master/bananas/management/commands/show_urls.py


1
django.conf.urls থেকে আমদানি করা RegexURLPattern, RegexURLResolver django> ২.০ এ বেশি বৈধ নয় তবে আমি এবার
গিস্টটি খাপ খাইয়েছি

আমি সম্প্রতি এই সমস্যাটির মুখোমুখি হয়েছি এবং সংক্ষিপ্তসার আপডেট করেছি। জ্যাঙ্গো <2.0 তে চালানোর জন্য কারওর আগের সংশোধনটি ব্যবহার করা দরকার।
আন্দ্রেই

3

আপনি যে url টি জানেন তা কেবল টাইপ করুন এবং সার্ভারটি ইউআরএল নিদর্শনগুলির একটি তালিকা সহ একটি ত্রুটি বার্তা ফিরিয়ে দেবে।

উদাহরণস্বরূপ, আপনি যদি http: // লোকালহোস্ট: 8000 / কিছুতে কোনও সাইট চালাচ্ছেন

টাইপ করুন

HTTP: // লোকালহোস্ট: 8000 / কিছু / blahNonsense , এবং আপনার সার্ভারটি url অনুসন্ধানের তালিকাটি ফিরিয়ে দেবে এবং এটি ব্রাউজারে প্রদর্শিত হবে


2

জাঙ্গো ২.০-এর জন্য ন্যূনতম সমাধান

উদাহরণস্বরূপ, আপনি যদি ইনস্টলড অ্যাপসের প্রথম অ্যাপে থাকা কোনও ইউআরএল খুঁজছেন তবে আপনি এটির মতো অ্যাক্সেস করতে পারবেন:

from django.urls import get_resolver
from pprint import pprint

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

জ্যাঙ্গো 1. জন্য কাজ করে * খুব যদি আপনি আমদানি get_resolverথেকে django.core.urlresolvers। ধন্যবাদ মারসিও!
ফার্নান্দো কস্তা বার্টোল্ডি

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
আপনি দয়া করে আপনার উত্তর সম্পর্কে আরও বিশদ সরবরাহ করতে পারেন?
toshiro92

1
আমি আমার উত্তর সম্পাদনা করেছি, আপনাকে এটি আপনার শেলের মধ্যে চালাতে হবে।
আদিত্য সায়নী

0

আপনার প্রকল্পের প্রতিটি অ্যাপ্লিকেশন থেকে সমস্ত ইউআরএল প্যাটার্নগুলি সংগ্রহ করার জন্য আপনি একটি সাধারণ পদ্ধতিতে ডায়নামিক আমদানি তৈরি করতে পারেন:

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আপনার অ্যাপ্লিকেশনটির নাম যেখানে আপনার সেটিংস.পি ফাইল স্থাপন করা হয়েছে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.