使用 django 1.11 的模式更新受保护的服务 url 路径

Updating protected serve url path with patterns for django 1.11

你如何在当前 (1.11) 版本的 Django 中使用这段代码?下面的代码使用了 patterns 模块,但正如我在 google 中搜索的那样,它在 1.10 中被删除了。

from django.conf.urls import patterns, include, url
from django.contrib.auth.decorators import login_required
from django.views.static import serve
from django.conf import settings


@login_required
def protected_serve(request, path, document_root=None, show_indexes=False):
    return serve(request, path, document_root, show_indexes)

urlpatterns = patterns('',
    url(r'^%s(?P<path>.*)$' % settings.MEDIA_URL[1:], protected_serve, {'document_root': settings.MEDIA_ROOT}),
)

这里是源码教程link

在 Django 1.8+ 中,urlpatterns 应该是一个列表 (release notes)。也删除 patterns 导入。

from django.conf.urls import include, url

urlpatterns = [
    url(r'^%s(?P<path>.*)$' % settings.MEDIA_URL[1:], protected_serve, {'document_root': settings.MEDIA_ROOT}),
]