python - 从 Django 1.10 中的 Django url 提供完全静态(文档)网站

标签 python django django-templates django-1.10

我正在使用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/

相关文章:

django:如何将 css 传递给 form.as_ul

python - 使用 pysnmp 从 MIB 文本约定翻译 OID 值对

python - 如何组合代码来打印不同表格中的不同单元格?

Django 测试 : determine which view was executed

python - 即使路径正确,Django object.image.url 也不显示

python每3次迭代添加一个新的div

python - OrderedDict 的设置、获取和 popitem 性能

python - 如何在内存中的文件上从 python 运行程序?

django - 如何在 View 集中添加自定义权限

python - 是否有等效于 python 字符串乘法函数的 django 模板?