Jia*_*aro 5 django url optimization
在url patters和函数实例中传递字符串有什么好处?似乎它可以被优化为在需要之前不实际加载函数,但事实上这是真的吗?
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),
)
Run Code Online (Sandbox Code Playgroud)
编辑:如果它确实在它们需要之前不会导入,那么它将是内存的优化,但是在你真正尝试访问url之前不会引发不存在的函数和其他错误.
当然,如果您编写测试,这不是问题;)
主要的好处是,当您使用实际的可调用对象时,您可以执行诸如在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)))
Run Code Online (Sandbox Code Playgroud)
等等
这允许你有装饰器,只有当你特别想要它们时才应用于视图,而不是在视图文件中装饰,然后不得不忍受它总是应用装饰器.