- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
作为网站前端开发的新手,我能理解一些东西,比如路由、ORM 等,但我不明白它们是如何结合在一起的。我的理解是,使用 Pyramid/Django 等构建的网站有很多组件:
模板引擎:用于从代码中抽象出 HTML 的工具。有道理。
SQLAlchemy 等:一个 ORM。很好。
渲染器。不知道。
JS 库:JQuery 等:除了添加漂亮的效果外,不知道这些有什么用。这如何与模板引擎交互?这如何与整个框架交互?我可以在 Pyramid 中为 jquery 编写代码,还是单独编写 JS,将我的 JS 文件插入我的模板或...?
表单模板库(formish、formalchemy 等):它们与全局有何关系?他们插在哪里?
我还缺少任何其他重要组件吗?
那么,有人可以帮我解释一下堆栈吗?
最佳答案
1) A templating engine: Something for you to abstract away your HTML from your code. Makes sense.
其中有几个可用。 Mako 尝试在模板中使用许多常见的 Python 习语,以避免学习许多新概念。 Jinja2 类似于 Django,但功能更多。 Genshi 如果您喜欢基于 XML 的模板。
不幸的是,作为整个事物的新手,很难说哪个最容易开始。也许是 Jinja2。
2) SQLAlchemy et al. An ORM. Fine.
是的。
3) A renderer. No idea.
渲染器是一个 Pyramid View 配置选项,它告诉 Pyramid 如果您的 View 返回一个字典,那么它应该被传递给给定的“渲染器”。渲染器设置为使用扩展名称,Pyramid 带有几个内置的: http://docs.pylonsproject.org/projects/pyramid/1.0/narr/renderers.html#built-in-renderers
简而言之,渲染器选项仅仅查看你传递给它的名称,并找到一个匹配扩展名(.mak、.pt、'json'、'string'、.etc)的模板引擎,并渲染字典结果。
在许多框架中,您不会将渲染器指定为配置,而是在 View 中添加一些代码,如下所示:
def somefunc(request):
return render_to_response('/some/template.mak', {})
在 Pyramid 中,你可以做同样的事情:
@view_config(renderer='/some/template.mak')
def somefunc(request):
return {}
后者是一项有用的功能有几个原因:
当它完全处于配置状态时,您可以覆盖渲染器而无需更改 View 代码逻辑。
您可以添加多个根据其他条件更改渲染器的配置。
考虑这个示例,它根据 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 libraries: JQuery et al. No idea what use these are except for adding pretty effects. How does this interact with the templating engine? How does this interact with the entire framework? Can I write code for jquery in pyramid, or do I write JS separately, plug in my JS file into my template or...?
JS 库使编写 Javascript 变得更容易。它们在浏览器中与 DOM 交互,除了向可能需要 JSON 格式结果的 Web 应用程序发送 HTTP 请求外,它们与 Pyramid 没有交互。
首先,我建议您完全忽略 Javascript,直到您更加熟悉 HTML、DOM 树,并获得一个仅使用 HTML、CSS 和网络应用程序的网站。
5) Form templating libraries (formish, formalchemy et al) How do these relate to the big picture? where do they plug in?
我强烈建议完全忽略这些,并编写基本的 HTML 表单元素。您是整个 Web 堆栈的新手,如果不先熟悉基础知识,真的没有必要直接跳到 Web 开发的最高级方面。
不过,在编写基本表单之后,您需要的是一个表单验证库,它可以更轻松地验证提交的表单是否包含有效参数。在过去的 PHP 时代,人们会编写数百行遍历表单的 if/else 语句(有些人仍然这样做!ack!)。
现在我们使用表单验证库,可以很容易地声明表单的有效参数。我建议首先使用 FormEncode,因为它很容易使用 just 进行验证。对于 Pyramid,使用 FormEncode 最简单的方法可能是 pyramid_simpleform: http://packages.python.org/pyramid_simpleform/
现在,忽略表单渲染部分,自己在模板中编写 HTML 表单元素,使用 pyramid_simpleform 只是为了简单的 FormEncode 集成。
简而言之,从使用 View 函数和模板显示带有链接的 HTML 页面开始(并使用 URL 调度,对于初学者来说比遍历更容易掌握)。然后添加表单、它们的 HTML 和验证,然后添加 CSS 以开始设置样式。
接下来,您可以从一些基本的 Javascript 和 jQuery 开始,让内容在页面上四处移动,然后逐步通过 AJAX 与网络应用程序交互以获取更多数据。只是不要一次处理太多,应该更容易看出它们是如何组合在一起的。
关于javascript - Web 2.0 生态系统/堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4918575/
我有这个代码: System.err.print("number of terms = "); System.out.println(allTerms.size()); System.err
我有以下问题:在操作系统是 Linux 的情况下和在操作系统是 MacOs 的情况下,我必须执行不同的操作。 所以我创建了以下 Ant 脚本目标: /u
我正在调用 system("bash ../tools/bashScript\"This is an argument!\"&"),然后我正在调用 close(socketFD) 直接在 system
使用最初生成的随机元素来约束随机数组的连续元素是否有效。 例如:我想生成一组 10 个 addr、size 对来模拟典型的内存分配例程并具有如下类: class abc; rand bit[5:0
我正在创建一个必须使用system(const char*)函数来完成一些“繁重工作”的应用程序,并且我需要能够为用户提供粗略的进度百分比。例如,如果操作系统正在为您移动文件,它会为您提供一个进度条,
我即将编写一些项目经理、开发人员和业务分析师会使用的标准/指南和模板。目标是更好地理解正在开发或已经开发的解决方案。 其中一部分是提供有关记录解决方案的标准/指南。例如。记录解决/满足业务案例/用户需
在开发使用压缩磁盘索引或磁盘文件的应用程序时,其中部分索引或文件被重复访问(为了论证,让我们说一些类似于 Zipfian 分布的东西),我想知道什么时候足够/更好地依赖操作系统级缓存(例如,Debia
我们编写了一个 powershell 脚本,用于处理来自内部系统的图像并将其发送到另一个系统。现在,业务的另一部分希望加入其中,对数据进行自己的处理,并将其推送到另一个系统。打听了一下,公司周围有几个
我正在尝试朗姆酒我的应用程序,但我收到以下错误:System.Web.HttpUnhandledException:引发了“System.Web.HttpUnhandledException”类型的异
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,
所以我在其他程序中没有收到此错误,但我在这个程序中收到了它。 这个程序是一个我没有收到错误的示例。 #include int main() { system("pause"); } // en
我在 c# System.URI.FormatExption 中遇到问题 为了清楚起见,我使用的是 Segseuil 的 Matlab 方法,并且它返回一个图片路径 result。我想为其他用户保存此
我正在尝试像这样设置文本框的背景色: txtCompanyName.BackColor = Drawing.Color.WhiteSmoke; 它不喜欢它,因为它要我在前面添加系统,例如: txtCo
请帮助我解决 System.StackOverflowException我想用 .aspx 将记录写入数据库我使用 4 层架构来实现这一切都正常但是当我编译页面然后它显示要插入数据的字段时,当我将数据
我使用了一些通常由系统调用的API。 因此,我将 android:sharedUserId="android.uid.system" 添加到 manifest.xml, 并使用来自 GIT 的 And
我正在尝试创建一个小型应用程序,它需要对/system 文件夹进行读/写访问(它正在尝试删除一个文件,并创建一个新文件来代替它)。我可以使用 adb 毫无问题地重新挂载该文件夹,如果我这样做,我的应用
我想从没有 su 的系统 priv-app 将/system 重新挂载为 RW。如何以编程方式执行此操作?只会用 Runtime.getruntime().exec() 执行一个 shell 命令吗
我正在尝试制作一个带有登录系统的程序我对此很陌生,但我已经连续工作 8 个小时试图解决这个问题。这是我得到的错误代码 + ServerVersion 'con.ServerVersion' threw
当我“构建并运行”Code::Blocks 中的程序时,它运行得非常好!但是当我从“/bin”文件夹手动运行它时,当它试图用 system() 调用“temp.bat”时,它会重置。这是为什么?它没有
我想使用 system/pipe 命令来执行具有特殊字符的命令。下面是示例代码。通过系统/管道执行命令后,它通过改变特殊字符来改变命令。我很惊讶地看到系统命令正在更改作为命令传递的文本。 run(ch
我是一名优秀的程序员,十分优秀!