集成Sphinx和Django以要求用户登录以查看文档

 mobiledu2502902523 发布于 2023-02-12 19:07

我很好奇是否可以在django应用程序中隐藏sphinx文档,以便只有登录的人才能看到它.在我看来,由于sphinx创建了自己的结构,并且Django使用urlconf来定义用户可以看到的页面,因此无法将两者合并.虽然Django网站可能会使用django和sphinx,但必须有一些组合.我想知道是否有人有任何见解,或者他们是否可以指出我正确的方向.

先感谢您!

1 个回答
  • Sphinx将您的文档构建为HTML文件,因此在大多数情况下,这些文档应该由您的Web服务器而不是Django提供.然而,Django也能够提供静态文件.

    您可以使用该django.views.static.serve函数执行此操作并使用此函数包装login_required.例如:

    from django.views.static import serve
    from django.contrib.auth.decorators import login_required
    
    urlpatterns += patterns('', 
        url(r'^docs/(?P<path>.*)', login_required(serve), {'document_root': '/path/to/sphinx/build/html'}, 'docs'),
    )
    

    但是这种配置在生产环境中被认为是一种不好的做法,因为在这种情况下,Django将从你的sphinx主题提供html和css/js文件.

    你可以在这里做的第一个改进是/path/to/sphinx/build/html/_static/使用apache/nginx或你使用的任何东西.

    更合适的方法是使用apache/nginx提供文档并使其处理auth本身.不幸的是我做了一个快速的谷歌搜索,但没有找到一种方法来使用Django的用户模型来处理apache或其他的http_auth.或者你可以使用类似的东西mod_sendfileX-Accel模块 - http://www.wellfireinteractive.com/blog/nginx-django-x-accel-redirects/简而言之 - 如果用户可以查看文件并添加特殊标题,Django app会检查权限包含文件路径的响应.Web服务器将提供此文件,而不是来自django的原始消息

    2023-02-12 19:10 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有