我正在使用 Google 应用引擎创建一个测试应用。
我有一个处理程序来呈现初始网页,其中包括一个按钮。当我单击按钮时,我想发回一些信息,因此我使用如下请求:
var request = { "myData": {
"key1": value,
"key2": value
} };
$.ajax({
url: '/my_handler',
type: 'GET',
data: JSON.stringify(request),
contentType: 'application/json',
success: successFunc,
error: errorFunc
});
然后我在 myHandler
中获取数据,如下所示:
class MyHandler(webapp2.RequestHandler):
def get(self):
logging.info(self.request)
现在我希望根据该数据呈现不同的页面。
但是,如果我尝试在 MyHandler
内调用 self.response.write("something")
它(逻辑上)不会在网页中呈现它,而是将其返回successFunc(响应)
。
如何将控制权交还给 python 来渲染我的模板?
从 Python 和 Javascript 中控制网页的外观感觉有点奇怪。
我的方法完全错误吗?
最佳答案
通常有两种方法来控制页面的呈现方式:
旧的、传统的服务器端方法是将 URL 与每个 View 相关联,并让服务器在将 HTML 发送到浏览器之前计算该 HTML。这就是 Python 可以提供帮助的地方。在这种情况下,对 HTML 的任何更改都需要更改或刷新页面。
客户端方式,即使用静态HTML和JS文件,然后向服务器发送AJAX请求来获取信息或执行客户端无法完成的计算。在这种情况下,Python 代码仅提供 AJAX 请求的答案(通常采用 JSON 格式),然后 Javascript 决定如何处理该答案,例如添加按钮、删除图像等。
当然,这两种方法可以同时使用,例如使用Python代码预渲染页面,然后使用一些javascript+AJAX使页面更加动态。
根据您的情况,您有两种选择:
将逻辑保留在服务器上,使用 Python。这意味着您必须放弃 AJAX,而是将用户重定向到一个新页面,Python 将能够为其生成正确的 HTML 代码。您可以使用以下代码在 JavaScript 中执行此操作:
window.location.href = "/mypage?myparams=myvalues";
保留 AJAX,因为您希望用户停留在当前页面。在这种情况下,请查看 jQuery 等 javascript 框架如何帮助您操作页面以更新您想要的任何内容。作为中间步骤,您可以在 Python 中生成一些部分 html(如
<div>
),在 AJAX 响应中返回它,并让 jQuery 将其插入页面中。 Here is a documentation on how you can use jQuery to update the page .
关于javascript - 根据Javascript数据渲染页面的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23966115/