1) 模板引擎:让您从代码中抽象出 HTML 的东西。说得通。
其中有几个可用。Mako 尝试在模板中使用许多常见的 Python 习惯用法,以避免学习许多新概念。Jinja2 类似于 Django,但功能更多。如果您喜欢基于 XML 的模板,Genshi 就可以。
作为一个新手,不幸的是,很难说哪个最容易开始。也许Jinja2。
2) SQLAlchemy 等人。一个 ORM。美好的。
是的。
3) 渲染器。不知道。
渲染器是一个 Pyramid 视图配置选项,它告诉 Pyramid 如果您的视图返回一个 dict,那么它应该被传递给给定的“渲染器”。渲染器设置为使用扩展名,并且 Pyramid 带有几个内置的:
http ://docs.pylonsproject.org/projects/pyramid/1.0/narr/renderers.html#built-in-renderers
简而言之,renderer 选项仅查看您传递的名称,并找到与扩展名(.mak、.pt、'json'、'string'、.etc)匹配的模板引擎,并用它渲染 dict 结果.
在许多框架中,您不会将渲染器指定为配置,而是在视图中包含一些代码,如下所示:
def somefunc(request):
return render_to_response('/some/template.mak', {})
在 Pyramid 中,您可以使用以下方法执行相同的操作:
@view_config(renderer='/some/template.mak')
def somefunc(request):
return {}
后者是一种有用的功能有几个原因:
当它完全处于配置状态时,您可以覆盖渲染器而无需更改视图代码逻辑。
您可以添加多个配置以根据其他条件更改渲染器。
考虑这个示例,它根据 HTTP 请求是否为 XHR(需要 JSON 格式结果的 AJAX 请求,而不是需要模板引擎输出 HTML 的一般 HTTP 请求)来更改渲染器。
@view_config(renderer='json', xhr=True)
@view_config(renderer='/some/template.mak')
def somefunc(request):
# lookup some_dict_data in a db, etc.
return some_dict_data
4) JS 库:JQuery 等。除了添加漂亮的效果外,不知道这些有什么用。这如何与模板引擎交互?这如何与整个框架交互?我可以在金字塔中为 jquery 编写代码,还是单独编写 JS,将我的 JS 文件插入到我的模板中,或者......?
JS 库使编写 Javascript 变得更容易。它们在浏览器中与 DOM 交互,除了向您的 Web 应用程序发送 HTTP 请求(可能需要 JSON 格式的结果)之外,它们与 Pyramid 没有交互。
首先,我建议您完全忽略 Javascript,直到您更加熟悉 HTML、DOM 树并获得一个仅使用 HTML、CSS 和 Web 应用程序的网站。
5) 表单模板库(formish、formalchemy 等)这些与全局有什么关系?他们在哪里插入?
我强烈建议完全忽略这些,并编写基本的 HTML 表单元素。您是整个 Web 堆栈的新手,如果不先熟悉基础知识,确实没有必要直接跳到 Web 开发的最高级方面。
但是,在编写基本表单之后,您需要一个表单验证库,以便更轻松地验证提交的表单是否包含有效参数。回到 PHP 的旧时代,人们会编写数百行通过表单的 if/else 语句(有些仍然这样做!ack!)。
现在我们使用表单验证库,它可以很容易地声明表单的有效参数是什么。我建议从 FormEncode 开始,因为它很容易用于验证。对于 Pyramid,使用 FormEncode 的最简单方法可能是 pyramid_simpleform:
http ://packages.python.org/pyramid_simpleform/
现在,忽略表单渲染部分,自己在模板中编写 HTML 表单元素,使用 pyramid_simpleform 只是为了方便 FormEncode 集成。
简而言之,首先使用视图函数和模板显示带有链接的 HTML 页面(并使用 URL 调度,对于初学者来说比遍历更容易掌握)。然后添加表单、它们的 HTML 和验证,然后添加 CSS 以开始设置样式。
接下来,您可以从一些带有 jQuery 的基本 Javascript 开始,使页面上的内容移动,然后通过 AJAX 与 webapp 交互以获取更多数据。只是不要一次处理太多,应该更容易看出它们是如何组合在一起的。