1

我正在将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 做到这一点?

4

1 回答 1

2

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"),
  ]
于 2016-11-22T04:13:22.757 回答