如果我在这里真的很蠢,很多人道歉 - 我早上大部分时间都在寻找答案,但也许我在用错误的语言搜索。我正在使用Google App Engine,使用Python代码来设置我的webapp。我已设法使用以下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代码工作正常,所以这不是我的问题所在。我真的很感激这里的任何帮助!
答案 0 :(得分:2)
简而言之 - 您不是将这些值发送回处理程序,您需要将它们添加到查询字符串中或将其发回。
Javascript运行浏览器。页面在浏览器中呈现后,与后端代码无关。为了使您的Python代码能够从浏览器中了解任何内容,您必须将其发送回代码。这就是HTTP的工作原理。它是一个“请求/响应”周期,一旦响应(发送给浏览器的内容)完成,就没有连接。
因此,要将这些值发送回代码,您需要将它们作为查询字符串的一部分附加到请求中,例如/foo?lsCanWid=3&lsCanHei=4
(等等)。您需要使用javascript构建此URL,然后将其添加到您必须单击的链接 - 然后,在下一个请求(一旦单击此新链接),您的Python代码将收到价值。