gpt4 book ai didi

javascript - 如何在 Pylons 中生成 'AJAX templates'?

转载 作者:行者123 更新时间:2023-11-28 21:30:14 25 4
gpt4 key购买 nike

我最近开始接触 Pylons,想知道如何轻松地将 AJAX 功能集成到我的网站中。

基本上,假设我有一个通常通过 site.com/user/login 访问的登录表单。现在,通常,这将通过以下方式处理:

class UserController(BaseController):
def login(self):
render('/login.html')

login.html 将是一个继承基础的模板,具有页眉、页脚和导航侧边栏。一个平面、简单的网站。

我怎样才能AJAX化这个?我需要创建两个 login.html 模板,对吗?处理 Controller 的 login() 方法的好方法是什么?我应该设置一个类似 &ajax=true 的 GET 变量,然后在发出 render() 时检查它吗?

我想要一种漂亮而干净的方式来选择我的 Controller 如何呈现内容,而不是一些丑陋的黑客(如上面的 GET 方法)。

想法?

最佳答案

所有现代 Javascript 库都在其 AJAX 包装器中设置“X-Requested-With: XMLHttpRequest” header 。为了方便起见,Pylons 设置了 request.is_xhr 如果找到此 header ,则为 bool 值。

条件继承在 Mako 中有点棘手,因为 how <%inherit> is handled ,但这就是你要做的:

  1. 将 Controller 中的 render() 调用更改为 render('/login.html', {'ajax': request.is_xhr})

  2. 在您的模板中,使用 template inheritance 分离出 AJAX 模板中不需要的任何内容。 .

  3. 使用像这样的 <%inherit> : <%inherit file="${None if context.get('ajax') else 'login_base.html'}"/>

(注意:所使用的 render() 语法没有什么特别的。您可以轻松地使用 c.ajax = request.is_xhrcontext.get('c').ajax 来代替)

关于javascript - 如何在 Pylons 中生成 'AJAX templates'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3385181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com