0

如果我在这里真的很傻,很抱歉 - 我大部分时间都在寻找这个问题的答案,但也许我在寻找错误的术语。我正在使用 Google App Engine 和 Python 代码来设置我的网络应用程序。我已经设法使用以下 HTML 代码设置了基本页面结构:

main_html = """
<HTML>
  <HEAD>
    <LINK rel="stylesheet" type="text/css" href="static/css/main.css">
  </HEAD>
  <BODY>
    <DIV class="wspace">
      <BR>
    </DIV>
    <DIV class="header">
      <FONT class="logoFont">Logo Text</font>
    </DIV>
    <DIV class="maincontainer">
      <DIV class="sidebar" id="leftsidebar">
        <SCRIPT>
          var lsCanWid = document.getElementsByTagName("div"["leftsidebar"].offsetWidth
          var lsCanHei = document.getElementsByTagName("div")["leftsidebar"].offsetHeight
        </SCRIPT> 
      </DIV>
      <DIV class="sidebar" id="rightsidebar">
        <SCRIPT>
          var rsCanWid = document.getElementsByTagName("div")["rightsidebar"].offsetWidth
          var rsCanHei = document.getElementsByTagName("div")["rightsidebar"].offsetHeight
        </SCRIPT>
      </DIV>
      <DIV class="mainscreen" id="mainscr">
        <SCRIPT>
          var mainCanWid = document.getElementsByTagName("div")["mainscr"].offsetWidth
          var mainCanHei = document.getElementsByTagName("div")["mainscr"].offsetHeight
        </SCRIPT>
        %(MAINCONTENT)s
      </DIV>
    </DIV>
    <DIV class="footer">
      Footer Text
    </DIV>
    <DIV class="wspace">
      <FONT class="crnotice">Copyright Notice Text</FONT>
    </DIV>
  </BODY>
</HTML>
"""

我已经测试了 javascript 变量,这些变量完全按计划工作(例如,lsCanWid 返回左侧边栏的宽度)。

然后我在我的 Python 中得到了以下代码:

class MainHandler(webapp2.RequestHandler):
    def get(self):
        lsCanWid = self.request.get('lsCanWid')
        lsCanHei = self.request.get('lsCanHei')
        rsCanWid = self.request.get('rsCanWid')
        rsCanHei = self.request.get('rsCanHei')
        mainCanWid = self.request.get('mainCanWid')
        mainCanHei = self.request.get('mainCanHei')
        temp_str = str(lsCanWid)
        self.response.write(main_html %{"MAINCONTENT": temp_str})

app = webapp2.WSGIApplication([
    ('/', MainHandler)
], debug=True)

我之前没有尝试在“get”中使用 self.request.get,所以我不确定这是否是问题所在。如果将 temp_str 替换为其他字符串,python 代码工作正常,所以这不是我的问题所在。我会非常感谢这里的任何帮助!

4

1 回答 1

2

简而言之 - 您没有将这些值发送回您的处理程序,您需要将它们添加到查询字符串或将它们发回。

Javascript 运行浏览器。页面在浏览器中呈现后,与您的后端代码没有任何联系。为了让您的 Python 代码知道浏览器的任何内容,您必须将其发送回代码。这就是 HTTP 的工作原理。它是一个“请求/响应”循环,一旦响应(您发送到浏览器的内容)完成,就没有连接。

因此,要将这些值发送回您的代码,您需要将它们作为查询字符串的一部分附加到请求中,例如/foo?lsCanWid=3&lsCanHei=4(等等)。您需要使用 javascript 构建此 URL,然后将其添加到您必须单击的链接中 - 然后,在下一个请求中(单击此新链接后),您的 Python 代码将接收这些值。

于 2013-07-04T12:12:13.583 回答