为什么request.get()返回空字符串?

0 投票
1 回答
756 浏览
提问于 2025-04-18 15:43

我刚接触Python和Google App Engine。写了一个简单的代码,用来从一个表单获取输入,然后在新页面上显示出来。但是,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>

1 个回答

1

表单参数在 POST / 请求中是可以使用的(也就是 NewPost.post() 这个方法),但是在重定向到 /message 时,这些参数不会被带过去。你需要在处理 POST 请求的时候,把表单数据存储起来(比如存到数据库里),然后在重定向之后再从存储中取出来。

撰写回答