2009-06-19 16 views
5

क्या आपके यूआरएल पैटर में एक फंक्शन इंस्टेंस बनाम स्ट्रिंग को पास करने का कोई फायदा है? ऐसा लगता है कि यह अनुकूलित होने तक वास्तव में फ़ंक्शन लोड नहीं करने के लिए अनुकूलित किया जा सकता है, लेकिन क्या यह वास्तव में सच है?django- urls.py में एक स्ट्रिंग या एक उदाहरण पास करें?

from django.conf.urls.defaults import * 
from myapp.views import myView 

urlpatterns = patterns('', 
    # as a string 
    url(r'^as-string/$', "myapp.views.myView"), 

    # Uploading photos 
    url(r'^as-instance/$', myView), 

) 

संपादित: अगर यह सच है, जब तक वे जरूरत रहे हैं कि यह आयात नहीं करता है, तो यह स्मृति के लिए एक अनुकूलन होगा, लेकिन गैर existant कार्य करता है और अन्य त्रुटियों आप जब तक वास्तव में उठाया नहीं किया जाएगा यूआरएल देखने की कोशिश करो।

पाठ्यक्रम कि कोई समस्या नहीं है अगर आप परीक्षण हालांकि लिखने के

;)

+0

क्षमा करें, लेकिन मुझे उम्मीद है कि मेरा व्यू एक समारोह होगा, उदाहरण नहीं। अच्छी तरह से एक फोशन पाइथन में एक वस्तु है लेकिन ... – dzen

उत्तर

8

मुख्य लाभ यह है कि जब आप वास्तविक कॉल करने योग्य ऑब्जेक्ट के साथ काम कर रहे होते हैं तो आप URLConf में सजावटी लागू करने जैसी चीजें कर सकते हैं। तो अगर आप की तरह कर सकते हैं:

from django.conf.urls.defaults import * 
from django.contrib.auth.decorators import login_required 

from some_module import some_view 

urlpatterns = patterns('', 
         (r'^some_url/$', some_view), 
         (r'^some_other_url/$', login_required(some_view))) 

आदि

यह आपको सज्जाकार जो केवल एक दृश्य है जब आप विशेष रूप से, करने के लिए उन्हें चाहते हैं बल्कि विचारों फ़ाइल में सजाने और उसके बाद के लिए होने से ही लागू है देता है हमेशा उस सजावट के साथ रहने के साथ रहते हैं।

+0

मुझे वह चाल पसंद है मुझे अब से ऐसा करना होगा :) – Jiaaro

1

Perusing source RegexURLPattern (जो क्या defaults.url कवर के तहत उपयोग कर रहा है) की पुष्टि करता है कि आयात केवल तब होता है जब और यदि आवश्यक हो गया है करने के लिए, और इसलिए आपके विचार सही हैं: यह थोड़ा सा अनुकूलन है लेकिन इसके लिए पूरी तरह से परीक्षण की आवश्यकता है!

संबंधित मुद्दे