我正在使用mkdocs一个 wiki 文档网站,提供由不同人创建的 Markdown 教程和一般信息文件。 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 中不再有效,因为 View 必须是可调用列表或元组。
我不想从模板中提供此服务,因为网站的 Assets 为了不将 mkdocs 创建的 Assets 从它创建的 html 文件(可能位于模板中)拆分到 django 静态目录中。
尝试运行服务器时出现错误:
raise TypeError('view must be a callable or a list/tuple in the case of include().')
有什么简单的方法可以用网址来做到这一点吗?
最佳答案
Django 1.10 不再允许您在 URL 模式中将 View 指定为字符串(例如“django.views.static.serve”)。
解决方案是更新您的 urls.py 以包含可调用 View 。这意味着您必须在 urls.py 中导入 View 。如果您的 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"),
]
关于python - 从 Django 1.10 中的 Django url 提供完全静态(文档)网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40733446/