2010-01-19 11 views
24

रेल में, पर रेक के साथ सक्रिय मार्गों (http://guides.rubyonrails.org/routing.html) दिखा सकते हैं:क्या डीजेंगो में 'रेक मार्ग' के समान कुछ है?

$ rake routes 
      users GET /users   {:controller=>"users", :action=>"index"} 
formatted_users GET /users.:format {:controller=>"users", :action=>"index"} 
       POST /users   {:controller=>"users", :action=>"create"} 
       POST /users.:format {:controller=>"users", :action=>"create"} 

वहां भी इसी तरह उपकरण/दिखा Django उदा के लिए आदेश है यूआरएल पैटर्न, पैटर्न का नाम (यदि कोई है) और विचारों में संबंधित समारोह?

उत्तर

1

admindocs की एक समान सुविधा है। लेकिन यह यूआरएल नाम प्रदर्शित नहीं करता है।

4

एक प्रयोग ...

# appended to root urls.py 

if __name__ == '__main__': 

    from django.core.urlresolvers import RegexURLPattern, RegexURLResolver 
    from django.utils.termcolors import colorize 
    import os, sys 

    sys.path.append(os.path.abspath('..')) 
    os.environ['DJANGO_SETTINGS_MODULE'] = 'ialtr.settings' 

    def traverse(url_patterns, prefix=''): 
     for p in url_patterns: 
      if isinstance(p, RegexURLPattern): 
       composed = '%s%s' % (prefix, p.regex.pattern) 
       composed = composed.replace('/^', '/') 
       print colorize('\t%s' % (composed), fg='green'), '==> ', 
       try: 
        sys.stdout.write(colorize('%s.' % p.callback.__module__, 
         fg='yellow')) 
        print p.callback.func_name 
       except: 
        print p.callback.__class__.__name__ 
      if isinstance(p, RegexURLResolver): 
       traverse(p.url_patterns, prefix=p.regex.pattern) 

    traverse(urlpatterns) 

अब, अगर एक चलाता python urls.py ...

$ python urls.py 
    ^users/activate/complete/$ ==> django.views.generic.simple.direct_to_template 
    ^users/activate/(?P<activation_key>\w+)/$ ==> registration.views.activate 
    ^users/register/$ ==> registration.views.register 
    ^users/register/complete/$ ==> django.views.generic.simple.direct_to_template 
    ^users/register/closed/$ ==> django.views.generic.simple.direct_to_template 
    ^login/$ ==> django.contrib.auth.views.MethodDecoratorAdaptor 
    ^logout/$ ==> django.contrib.auth.views.logout 
    ^password/change/$ ==> django.contrib.auth.views.MethodDecoratorAdaptor 
    ^password/change/done/$ ==> django.contrib.auth.views.password_change_done 
    ^password/reset/$ ==> django.contrib.auth.views.MethodDecoratorAdaptor 
    ^password/reset/confirm/(?P<uidb36>[0-9A-Za-z]+)-(?P<token>.+)/$ ==> django.contrib.auth.views.password_reset_confirm 
    ^password/reset/complete/$ ==> django.contrib.auth.views.password_reset_complete 
    ^password/reset/done/$ ==> django.contrib.auth.views.password_reset_done 
    ^ialt/applications/$ ==> ialt.views.applications 
    ^static/(?P<path>.*)$ ==> django.views.static.serve 
    ^$ ==> django.views.generic.simple.direct_to_template 
    ^about/ ==> django.views.generic.simple.direct_to_template 
2

जब मैं miku's answer की कोशिश की, मुझे मिल गया यह त्रुटि:

django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.

ऐसा लगता है कि समस्या की तरह मेरी urls.py में django.contrib.admin.autodiscover() का उपयोग करने से आता है, तो मुझे लगता है कि टिप्पणी या तो कर सकते हैं, या यूआरएल डंपिंग से पहले ठीक से Django लोड। बेशक अगर मैं मैपिंग में व्यवस्थापक यूआरएल देखना चाहता हूं, तो मैं उन्हें टिप्पणी नहीं कर सकता।

जिस तरह से मुझे मिला वह custom management command बनाना था जो यूआरएल को डंप करता था।

# install this file in mysite/myapp/management/commands/urldump.py 
from django.core.management.base import BaseCommand 

from kive import urls 


class Command(BaseCommand): 
    help = "Dumps all URL's." 

    def handle(self, *args, **options): 
     self.show_urls(urls.urlpatterns) 

    def show_urls(self, urllist, depth=0): 
     for entry in urllist: 
      print ' '.join((" " * depth, entry.regex.pattern, 
          entry.callback and entry.callback.__module__ or '', 
          entry.callback and entry.callback.func_name or '')) 
      if hasattr(entry, 'url_patterns'): 
       self.show_urls(entry.url_patterns, depth + 1)