Django : How can I see a list of urlpatterns?

后端 未结 16 1728
有刺的猬
有刺的猬 2020-11-29 19:36

How can I see the current urlpatterns that \"reverse\" is looking in?

I\'m calling reverse in a view with an argument that I think should work, but doesn\'t. Any wa

16条回答
  •  孤独总比滥情好
    2020-11-29 19:45

    Django 1.11, Python 2.7.6

    cd to_your_django_project

    python manage.py shell

    Then paste following code.

    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)
    

    Sample output:

    ^django-admin/^$
    ^django-admin/^login/$
    ^django-admin/^logout/$
    ^django-admin/^password_change/$
    ^django-admin/^password_change/done/$
    ^django-admin/^jsi18n/$
    ^django-admin/^r/(?P\d+)/(?P.+)/$
    ^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/^(.+)/$
    ...
    

提交回复
热议问题