【问题标题】:Why does request.get() return empty string?为什么 request.get() 返回空字符串?
【发布时间】:2014-09-25 08:22:02
【问题描述】:

我是 python 和谷歌应用引擎的新手。我编写了简单的代码来从表单中获取输入,然后将其显示在新页面上。但是,self.request.get() 方法返回空字符串。为什么会发生这种情况,我该如何解决这个问题?

import os
import jinja2
import webapp2


template_dir = os.path.join(os.path.dirname(__file__), 'templates')
jinja_env = jinja2.Environment(loader = jinja2.FileSystemLoader(template_dir), autoescape = True)


class NewPost(webapp2.RequestHandler):
    def get(self):
        self.response.out.write(jinja_env.get_template('newpost.html').render())

    def post(self):
        title = self.request.get('title')
        body = self.request.get('body')


        self.redirect('/message') 

class Message(webapp2.RequestHandler):
    def get(self):    
        title = self.request.get('title')
        body =  self.request.get('body')

        self.response.out.write('message: ' + title + body)



app = webapp2.WSGIApplication([webapp2.Route(r'/', handler=NewPost, name='newpost'), webapp2.Route(r'/message', handler=Message, name='message')], debug = True)

newpost.html 是:

<!DOCTYPE HTML>
<html>
<head>
<title> Title </title>
</head>
<body>

<form method="post">
    <label>
        <div>Title</div>
    </label>
    <input type="text" name="title" value="{{title}}">


    <label>
        <div>Body</div>
    </label>
    <textarea name="body">{{body}}</textarea>


    <input type="submit">
</form>

</body>
</html>

【问题讨论】:

  • 附带说明,您应该在每个get 方法和每个post 方法中使用try/except
  • 感谢 Dan,我使用数据存储解决了这个问题。

标签: python html google-app-engine jinja2 webapp2


【解决方案1】:

POST / 请求 (NewPost.post()) 可以使用表单参数,但它们不会在重定向到 /message 时继续使用。在处理POST 时,您必须以某种方式存储表单数据(例如存储到数据存储中),然后在重定向后从存储中检索它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-27
    • 2016-11-23
    • 2011-05-08
    • 1970-01-01
    • 1970-01-01
    • 2013-05-14
    相关资源
    最近更新 更多