【发布时间】:2013-07-01 03:17:42
【问题描述】:
首先,总的来说,我对网络编程非常陌生。我在网上阅读了很多教程,这有点令人困惑,因为其中一些已经过时了。因此,如果我走的是一条根本错误的道路,我会喜欢有关 The Right Way 的建议。话虽如此,这只是一个有趣的项目,所以如果有一种简单(
所以无论如何,我正在使用 Google App Engine (Python 2.7) 进行简单的计算。我显示一个表单,用户填写值,单击底部的一个按钮,一些结果文本与计算结果一起显示。这部分工作正常。
对于我自己的测试,总是重新输入输入值很烦人,而且有些字段对用户来说并不完全清楚,所以我希望能够将链接发送给表单外的某人“ http://buggyapp.appspot.com/calculation?input1=100&input2=200" 并让它填写这两个参数。这部分也有效。
问题是当用户加载那种链接,更改表单中的一个值,然后单击按钮时。它不使用(更改的)表单值,而是使用 URL 中的值。我想解决这个问题,理想情况下,我希望 URL 栏在页面加载后甚至不显示 URL 参数。
我不确定需要哪些信息来帮助您找出我做错了什么。
这是 HTML 中的一个部分,它是一个 Jinja2 模板:
<form method="post">
<input value="{{ input1 }}" name="input1">
<input value="{{ input2 }}" name="input2">
<button class="submit" type="submit">Calculate</button>
</form>
<p>{{ result }}</p>
这是python代码:
def get(self):
input1 = request.get('input1')
input2 = request.get('input2')
# some irrelevant(?) code to set default values on the initial load if there are no URL Params
result = str(input1+input2) #actual calculation slightly more complicated than this
template = JINJA_ENVIRONMENT.get_template('calculation.html')
self.response.write(template.render(vars()))
无论我将计算放在 get 处理程序还是 post 处理程序中,它的行为似乎都是一样的。目前,我只是在互相打电话:
def post(self):
input1 = request.get('input1')
print input1 # even this shows the URL value (if one exists), not form value
return self.get();
因此,my 下一步要使其工作,将更改表单输入的名称,使其与 URL 参数不同,并添加额外的代码来合并潜在的输入源。但这并不能真正让我得到我想要的,即一旦 URL 参数填充了输入表单,它们就会消失。它还使生成此类链接的代码部分复杂化。
我更喜欢纯 Python 解决方案,但我愿意使用 javascript。还有其他堆栈溢出问题/答案暗示 javascript 机制会做我想做的事,但我对它们中的任何一个都不够了解,无法将它们应用于我的问题。
我确定我做错了很多其他事情,我可能有过于简单化的事情或没有发布足够的信息。我是来学习的,所以开火吧。并提前感谢您的帮助。
tl;dr- 我如何使用一次 URL 参数,然后将它们从 URL 中删除,这样它们就不会覆盖后续帖子中的表单输入?
【问题讨论】:
-
form标签的实际属性是什么?您使用的是 GET 还是 POST?
标签: python google-app-engine url