javascript - 根据Javascript数据渲染页面的正确方法

标签 javascript python google-app-engine jinja2

我正在使用 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 中控制网页的外观感觉有点奇怪。
我的方法完全错误吗?

最佳答案

通常有两种方法来控制页面的呈现方式:

  1. 旧的、传统的服务器端方法是将 URL 与每个 View 相关联,并让服务器在将 HTML 发送到浏览器之前计算该 HTML。这就是 Python 可以提供帮助的地方。在这种情况下,对 HTML 的任何更改都需要更改或刷新页面。

  2. 客户端方式,即使用静态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/

相关文章:

python - Keras 破坏 Anaconda Prompt

python - 在逻辑回归的背景下理解 np.where()

python - Google App Engine 中的服务器发送事件 (SSE)

java - 警告 : No file found for:/sign

python - 如何解决 "[Errno 13] file not accessible"错误?

javascript - 在 CKEDitor 中最大化/调整对话框窗口的大小

javascript - 在 <a> 上动态添加 href

javascript - YUI 库 - 保持对象全局引用的最佳方法?

python - 为每个文件运行 Airflow DAG

javascript - 尝试清除 Google map 标记时出现范围问题