【问题标题】:Django URLConf - url() function - can it be omitted?Django URLConf - url() 函数 - 可以省略吗?
【发布时间】:2014-06-19 17:24:47
【问题描述】:

我刚刚发现下面的代码给出了相同的结果:

urlpatterns = patterns('',
    url(r'^admin/', include(admin.site.urls)),
)

就像这个:

urlpatterns = patterns('',
    (r'^admin/', include(admin.site.urls)),
)

那么,在第一种编码方式中使用 url() 函数有什么用处呢?

【问题讨论】:

标签: django django-urls urlconf


【解决方案1】:

目前这两个选项基本相同,因为在第二种情况下,Django 为您的每个元组应用 url() 函数。引用自django.conf.url.patterns源代码:

def patterns(prefix, *args):
    ...
    pattern_list = []
    for t in args:
        if isinstance(t, (list, tuple)):  # < HERE
            t = url(prefix=prefix, *t)
        elif isinstance(t, RegexURLPattern):
            t.add_prefix(prefix)
        pattern_list.append(t)
    return pattern_list

另外,正如@Kevin Christopher Henry 已经指出的hereurlpatterns 正在被弃用(请参阅Deprecate 'prefix' arg to django.conf.urls.patterns 票和此pull request)。如果没有urlpatterns,我们将不得不在url 列表的每个项目上显式调用url()。最好养成使用它的习惯。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-11
    • 1970-01-01
    • 2019-08-13
    相关资源
    最近更新 更多