首页 > 解决方案 > 使用 django 1.11 的模式更新受保护的服务 url 路径

问题描述

您如何在当前(1.11)版本的 Django 中使用此代码?下面的代码使用了模式模块,但当我用谷歌搜索它时,它在 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}),
)

这是源教程链接

标签: pythondjangodjango-urls

解决方案


在 Django 1.8+ 中,urlpatterns 应该是一个列表(发行说明)。也删除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}),
]

推荐阅读