Django Direct_to_template 或平面页面

Posted

技术标签:

【中文标题】Django Direct_to_template 或平面页面【英文标题】:Django Direct_to_template or flatpages 【发布时间】:2010-08-17 17:05:57 【问题描述】:

构建一个 django 应用程序,在网站前面有一些主要是静态页面,例如about.html 常见问题.html

那种东西

我正在研究 urls.py 的工作原理并创建了它。

('(.+\.html)$', direct_to_template),

它似乎完全符合我的需要。现在,对于我添加到模板文件夹根目录的任何新 .html 页面,它都可以正常工作。模板/about.html 模板/faq.hml

我也可以在我的模板中使用类似的东西

% include "_menu.html" %

现在有人好心地指出了 Django FlatPages,并建议我可以改用它们。如果我没有连接到数据库,我这样做的方式是否有任何缺点。

在我看来,它是比 FlatPages 更好的方法,因为它使用 db 并且不是很优雅(但实际上并没有在实践中使用 flatpages)

【问题讨论】:

【参考方案1】:

如果您可以直接编辑模板文件并手动将新模板文件添加到您的 urls.py 文件中,那么请坚持使用现有的内容。如果您希望能够从管理界面或任何您可能关心设计的基于 Web 的编辑工具编辑页面内容,或者更重要的是:如果您希望非技术用户能够编辑页面内容,Flatpages 很有用内容。

【讨论】:

我认为你没有抓住重点。使用这个解决方案,我根本不需要编辑 urls.py 文件。如果我想要一个新文件,比如 example.com/terms.html,我所要做的就是创建新的 html 文件并将其保存到我的模板文件夹中......完成。不过,我确实了解 CMS 部分。 抱歉,我读得太快了。听起来你的方式很好;过度设计某些东西是没有意义的。【参考方案2】:

我建议更进一步。如果您的静态内容不经常更改并且不使用 Django 的模板,那么不要使用 Django 来为它们提供服务。请改用 nginx 等轻量级服务器。

如果您确实使用 Django 的模板功能而不需要数据库中的任何动态内容,那么您可以坚持使用direct_to_template

【讨论】:

agh.. 所以我的方法是 +1。 :) 如果您正在寻找基于类的视图的 direct_to_template 替代方案,请查看此答案***.com/a/12150035/742390【参考方案3】:

使用 FlatPages 的一个优点是,您可以使用 Django 模板来制作页眉、侧边栏、页脚(以保持一致的网站外观),同时仍然主要使用纯 HTML 作为页面内容。这被将页面内容存储在数据库表中的需要所抵消。

我的建议?如果您正在做的是满足您的需求,请坚持有效的方法。

【讨论】:

以上是关于Django Direct_to_template 或平面页面的主要内容,如果未能解决你的问题,请参考以下文章

将 Django direct_to_template 函数转换为使用基于类的视图

django 1.9 中的 from django.views.generic.simple import direct_to_template 相当于啥

如何在 direct_to_template 上免除 CSRF 保护

动态 direct_to_template

django root url 不起作用

`/` 上的表单中的 CSRF 令牌丢失或不正确