我想将用户重定向到一个确认页面,如果他们输入有效主题,则会显示主题和内容(如果有的话),但是如果主题为空白或者结束,则保持在同一页面上并显示错误三百个字符。
这是我的后端代码:
def post(self):
subject = self.request.get('subject')
content = self.request.get('content')
a, b = self.validSubject(subject)
if a == True and b == True:
self.redirect('/confirm')
else:
if a == False:
error = "Title cannot be blank!"
if b == False:
error = "Title cannot be over 300 characters."
self.render("newpost.html", subject = subject, content = content, error = error)
以下是newpost.html模板的代码:
<h2>New Question</h2>
<hr>
<form method="post">
<label>
<div>Title</div>
<input type="text" id="subject" name="subject">
</label>
<label>
<div>
<textarea name="content" id="postcontent"></textarea>
</div>
</label>
<b><div class="error">{{error}}</div></b>
<input type="submit">
</form>
我尝试在POST表单中添加action="/confirm"
,但即使出现错误,也会重定向到/确认。我查看了webapp2文档,但无法找到有关如何在重定向上传递变量的任何内容。 (https://webapp-improved.appspot.com/api/webapp2.html#webapp2.redirect)
我使用的是webapp2和jinja2。感谢您提前提供的任何帮助,我一直在看这段代码:(
答案 0 :(得分:1)
您尝试编写的模式在http中无效,无论您使用的是哪种后端平台或语言。您的HTML正在发布到服务器,GAE代码正在处理帖子。在交互的那一点上,浏览器已经提交并正在等待来自服务器的响应。你不能在那时停止提交,因为它已经发生了。
在将表单提交到服务器之前,您应该考虑在Javascript中验证输入。这样,如果您的数据无效,您可以首先取消提交表单。
看一下以下问题,看一个例子: