【问题标题】:Web Templating Engine - Python [closed]Web 模板引擎 - Python [关闭]
【发布时间】:2013-11-16 11:19:46
【问题描述】:

我需要用 Python 构建一个 Web 模板引擎。我知道那里有一些,但我需要自己写。我需要处理两件事:

  1. 字符串替换
  2. For 循环结构

我们将非常感谢您对此事的任何帮助。想了想,不知道怎么办。

另外,我是新来的,所以请原谅我的错误。

【问题讨论】:

  • 为什么不看看现有的灵感来源,比如jinja2
  • 在同一行,让我建议Django
  • 我觉得它太复杂了。我想实现更简单的东西。但无论如何我都会看看它。谢谢!
  • need # 只有当你知道自己在做什么并且现有的都没有做你需要做的事情,或者其他人要求你自己写一个时,这才是正确的。我自己至少做过一次,我可以说这是个坏主意,你应该使用现有的解决方案如果可能,否则你只会重复他们所有的错误。
  • 嗯,这是一个家庭作业,我需要自己写。我只需要一些关于如何去做的直觉/方向/指导。我也不介意使用现有的逻辑,但我找不到任何可以参考的东西。

标签: python web template-engine


【解决方案1】:

好吧,如果您希望进行字符串替换,那么您可以尝试以下方法:

>>> "{0}".format("Hello")
'Hello'
>>> "{name}".format(name="Hello")
'Hello'

如果你想制作for 循环结构,会有点困难:

>>> names = ['Joe', 'Bob', 'Stanley', 'Ahmed', 'Inbar', 'Hossain']
>>> var = "".join("{number} -> {name}\n".format(name=name, number=n) for n, name in enumerate(names))
>>> var
'0 -> Joe\n1 -> Bob\n2 -> Stanley\n3 -> Ahmed\n4 -> Inbar\n5 -> Hossain\n'
>>> print var
0 -> Joe
1 -> Bob
2 -> Stanley
3 -> Ahmed
4 -> Inbar
5 -> Hossain

上面是可以做的一个例子,当然,你可以用这种格式做li标签之类的事情:

var = "".join("<li>{name}</li>\n".format(name=name, number=n) for n, name in enumerate(names))

会产生:

<li>Joe</li>
<li>Bob</li>
<li>Stanley</li>
<li>Ahmed</li>
<li>Inbar</li>
<li>Hossain</li>

【讨论】:

    猜你喜欢
    • 2010-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-14
    • 2010-12-19
    • 1970-01-01
    • 1970-01-01
    • 2011-02-26
    相关资源
    最近更新 更多