【问题标题】:What should I worry about Python template engines and web frameworks? [closed]我应该担心 Python 模板引擎和 Web 框架吗? [关闭]
【发布时间】:2012-08-14 08:54:47
【问题描述】:

我是一名 C# 和 ASP.NET MVC 开发人员。我已经完成了一些 Python 控制台应用程序,但是对于将 Python 用于 Web 应用程序我还是新手。我读了很多关于 Python 服务器和模板引擎的文章。

但我担心:

  • 哪些模板引擎适合 Python 服务器/Python Web 框架?还是应该适合?
  • 模板引擎中是否存在安全问题?或者我可以选择任何我喜欢语法的人。
  • 任何模板引擎都可以将数据(我的模型,orm 模型) 与控制器及其自身集成吗?这种集成会导致任何安全、内存问题吗?
  • 对任何模板引擎使用 Python 2.x 或 3.x 是否重要?

我知道有jinja2、pytenjin(似乎很快)、pyrazor。 我已经尝试了所有方法,由于我的 ASP.NET MVC 背景,我对 pyRazor 感觉很舒服。

我担心之后的最后一个问题:

  • 我应该使用哪些模板引擎?
  • 用 Tornado 开始开发的最佳开发环境(python web 框架,模板引擎)是什么?

我知道我已经问了很多问题,但在我投入到实际项目的开发中之前我必须小心。

关于 cmets 的编辑:好的,我觉得我需要更具体地说明我在寻找什么。由于许多开发人员在 python web 编程中需要(至少来自其他平台),我需要弄清楚我有哪些开发选项。 (IDE、模板引擎、Web 服务器等)以及如何以适当的方式将它们结合起来,以减少开发时间并提高生产力而不破坏安全性。

更新 1: 我认为我们,来自 VS 和 ASP.NET 世界的开发人员,已经习​​惯于将所有东西放在一个盒子里,为开发做好准备。当因为项目需要而使用另一种技术时,我们(至少我)变得偏执。因为我们需要让一切和谐。很明显,为 .NET 项目使用 IIS、.NET 和 VS(具有所有高级功能)。

好吧,经过这么多搜索和调查,我决定使用 PyCharm 作为 Django 的 IDE。我希望有一天 PyCharm 能够像支持 Django 一样支持 web2py。

好的,服务器呢?我会让 nginx 或 cherokee 为我工作。

好的,模板引擎呢?我将使用默认的 Django 模板引擎。(我不太喜欢 pyRazor)但是这种方式会更容易找到帮助或请求更多功能。在后期,我可以再试一次 jinja2(在 PyCharm 中你可以更改要在 Django 中使用的模板引擎)。

【问题讨论】:

  • 投票以非建设性的方式关闭。这些问题没有客观答案。 "...但是在我潜入...之前我必须小心..."。问随机的人随机的问题是不小心的。小心就是自己尝试选择。
  • @StephenC,感谢您提供的信息,您可能是对的。但我已经尝试了很多东西并继续尝试。如您所见,我的问题是关于概念、生产力以及我应该为自己承担哪些风险。
  • 尽管您可能已经尝试了一些选项,但当我们不知道您真正追求什么功能时,这个问题仍然会轮询建议。然后你问你应该使用什么服务器。另一套完整的选项。对此没有真正的答案。只有你最喜欢的那个。
  • 谢谢,我已经编辑了我的问题。
  • 有很多框架可供选择。好奇你为什么要“离开”asp.net mvc 来使用 python 堆栈?我知道 python 很棒,但为什么呢?

标签: python frameworks web2py templating pycharm


【解决方案1】:

没有终极模板引擎或网络框架。例如。我喜欢flask、Jinja2 和SQLAlchemy 的组合。其他人更喜欢Django,它带来了ORM和模板引擎。其他人更喜欢mako(也是一个模板引擎)。试试看,看看你最喜欢什么。

当然,您的模板中可能存在安全问题,例如XSS Attacks,但这不太可能,Jinja2 有例如自动转义默认开启,所以你可以随意输入,它会自动转义。

是的,您可以将您的 ORM 模型与模板引擎集成(您可以将 db-instance 和模型传递给模板),但我不会这样做,只是因为在您的路线中这样做更容易。如果您集成它,则不会有更多的安全/内存问题,就像您在“正常”代码中那样。

Python 版本无关紧要(只要引擎支持它),但我会使用 Python 2.7,因为它带来了 Python 3 的一些很酷的特性,并且它有更多可用的库(并非所有东西都移植到 Python 3 个)。

【讨论】:

  • 感谢您提供翔实的解释。
  • 我做了一个 +1 纯粹是基于第一个关于没有终极组合的声明。它们都提供不同的功能。有些人想要尽可能轻的重量。其他人想要一个一体化的解决方案,比如 django(带有 orm、模板、路由的 Web 框架)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多