在 Django 1.10 中提供来自 Django url 的完全静态(文档)网站

Serve entirely static (documentation) website from Django url in Django 1.10

我正在使用 mkdocs 的 wiki 文档站点,该站点提供由不同人创建的降价教程和一般信息文件。 mkdocs 在 site 目录中输出一个完全静态的站点。有没有在 django 1.10 中为这个网站提供服务?我知道你以前可以这样做:

 url(r'^docs/wiki/', 'django.views.static.serve', {'document_root': base.DOCS_ROOT, 'path': 'index.html'}),
 url(r'^docs/wiki/(?P<path>.*)$', 'django.views.static.serve', {'document_root': base.DOCS_ROOT}),

但这在 Django 1.10 中不再有效,因为视图必须是可调用的列表或元组。

我宁愿不在模板之外提供这个,因为网站的资产是为了不将 mkdocs 创建的资产从它创建的 html 文件拆分到 django 静态目录中,这些文件可能位于模板。

如果尝试 运行 服务器出现错误:

raise TypeError('view must be a callable or a list/tuple in the case of include().')

有什么简单的方法可以用 url 来做到这一点?

Django 1.10 不再允许您在 URL 模式中将视图指定为字符串(例如 'django.views.static.serve')。

解决方案是更新您的 urls.py 以包含可调用视图。这意味着您必须在 urls.py 中导入视图。如果您的 URL 模式没有名称,那么现在是添加一个的好时机,因为用虚线 python 路径反转也不再有效。

像这样更新您的代码:

from django.views.static import serve
from django.conf.urls import url, patterns

urlpatterns = [

  url(r'^docs/wiki/',serve, {'document_root': base.DOCS_ROOT, 'path': 'index.html'},name = "wiki1"),
  url(r'^docs/wiki/(?P<path>.*)$', serve, {'document_root': base.DOCS_ROOT},name = "wiki2"),
  ]