与函数实例相比,在 url 模式中传递字符串有好处吗?看起来可以优化为在需要时不实际加载该函数,但这实际上是真的吗?
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),
)
编辑:如果确实在需要时才导入,那么这将是对内存的优化,但在您之前不会引发不存在的函数和其他错误实际上尝试访问该网址。
当然,如果您编写测试,这不是问题;)
最佳答案
主要的好处是,当您使用实际的可调用对象时,您可以执行诸如在 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)))
等等
这使您可以拥有仅在您特别需要时才应用于 View 的装饰器,而不是在 View 文件中进行装饰,然后必须始终应用该装饰器。
关于django-在 urls.py 中传递字符串或实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1018509/