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,
形式化学等)这些有什么关系
到大局?他们在哪里插入
在?
我强烈建议完全忽略这些,并编写基本的 HTML 表单元素。您是整个 Web 堆栈的新手,如果不先熟悉基础知识,确实没有必要直接跳到 Web 开发的最高级方面。
但是,在编写基本表单之后,您需要一个表单验证库,以便更轻松地验证提交的表单是否包含有效参数。回到 PHP 的旧时代,人们会编写数百行通过表单的 if/else 语句(有些仍然这样做!ack!)。
现在我们使用表单验证库,可以轻松声明表单的有效参数。我建议从 FormEncode 开始,因为它很容易使用 just 进行验证。对于 Pyramid,使用 FormEncode 的最简单方法可能是 pyramid_simpleform:
http://packages.python.org/pyramid_simpleform/
暂时先忽略表单渲染部分,自己在模板中编写 HTML 表单元素,使用 pyramid_simpleform 只是为了方便 FormEncode 集成。
简而言之,首先使用视图函数和模板显示带有链接的 HTML 页面(并使用 URL 调度,对于初学者来说比遍历更容易掌握)。然后添加表单、它们的 HTML 和验证,然后添加 CSS 以开始设置样式。
接下来,您可以从一些带有 jQuery 的基本 Javascript 开始,以使页面上的内容移动,然后通过 AJAX 与 webapp 交互以获取更多数据。只是不要一次处理太多,应该更容易看出它们是如何组合在一起的。