首先,总的来说,我对网络编程很陌生。我在网上阅读了很多教程,这有点令人困惑,因为其中一些已经过时了。因此,如果我走的是一条根本错误的道路,我会喜欢有关 The Right Way 的建议。话虽如此,这只是一个有趣的项目,所以如果有一种简单(<10 行)的方式来获得我想要的东西,我希望今天能看到快速的结果,即使长期来看我最终会发生根本性的改变事物。
所以无论如何,我使用 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();
因此,我的下一步是更改表单输入的名称,使其与 URL 参数不同,并添加额外的代码来合并潜在的输入源。但这并不能真正让我得到我想要的,即一旦 URL 参数填充了输入表单,它们就会消失。它还使生成此类链接的代码部分复杂化。
我更喜欢纯 Python 的解决方案,但我愿意使用 javascript。还有其他堆栈溢出问题/答案暗示 javascript 机制会做我想要的,但我对它们中的任何一个都不够了解,无法将它们应用于我的问题。
我确定我做错了很多其他事情,而且我可能过于简化了事情或没有发布足够的信息。我是来学习的,所以开火吧。并提前感谢您的帮助。
tl; dr-我如何使用一次 URL 参数,然后将它们从 URL 中删除,这样它们就不会覆盖后续帖子中的表单输入?