Django 1.10 模式重写

Django 1.10 patterns rewrite

Wagtail docs 包含以下用于设置 urls.py 的示例:

if settings.DEBUG:
    from django.contrib.staticfiles.urls import staticfiles_urlpatterns

    urlpatterns += staticfiles_urlpatterns() # tell gunicorn where static files are in dev mode
    urlpatterns += static(settings.MEDIA_URL + 'images/', document_root=os.path.join(settings.MEDIA_ROOT, 'images'))
    urlpatterns += patterns('',
    (r'^favicon\.ico$', RedirectView.as_view(url=settings.STATIC_URL + 'myapp/images/favicon.ico'))
)

patterns 在 Django 1.10 中已弃用。如何重写最后的 urlpatterns 以在 Django 1.10 中工作?我使用 python 3.5。感谢您的帮助。

我试过这个:

if settings.DEBUG:
    from django.contrib.staticfiles.urls import staticfiles_urlpatterns

    urlpatterns += staticfiles_urlpatterns() # tell gunicorn where static files are in dev mode
    urlpatterns += static(settings.MEDIA_URL + 'images/', document_root=os.path.join(settings.MEDIA_ROOT, 'images'))
    urlpatterns += url(r'^favicon\.ico$', RedirectView.as_view(url=settings.STATIC_URL + 'myapp/images/favicon.ico'))

但它导致错误:

TypeError: 'RegexURLPattern' object is not iterable

在 Django 1.8+ 中,urlpatterns 只是一个 url 列表。您可以将模式重写为列表 [] 而不是使用 patterns.

您已根据需要将元组转换为 url() 实例。现在你只需要把它放在一个列表中。

urlpatterns += [
    url(r'^favicon\.ico$', RedirectView.as_view(url=settings.STATIC_URL + 'myapp/images/favicon.ico')),
]