- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将一些数据模拟到数据存储中以模拟 POST。
我正在寻找一种将命名参数作为一个参数发布的方法。所以我可以使用与普通 POST 相同的方法。
我想通过两种方式调用获取参数的方法。
def HandlePost(params):
params.get('name')
params.get_all('collection')
class SavePartHandler(webapp.RequestHandler):
def post(self):
HandlePost(self.request)
我试图找出 self.request
的类型,但在 appengines 源代码中找不到它。
我的目标是模拟多个 POST 以按照用户的方式填充数据存储。
编辑:
或者是否有办法改变 dict
的行为,以便它可以使用 get_all
方法?
编辑2:
我正在使用appengins webapp。
出于好奇,有没有办法调用虚拟 webapp.RequestHandler 并用参数填充它?我正在浏览源代码以了解它是如何完成的并为其创建了一个新实例,但找不到如何填充它。
编辑3:
更新了方法名称,这样就不会与 Web 应用程序请求处理程序混淆。
多亏了pthulin,我已经快到了。剩下的就是如何模拟具有相同 key 的数据。因为使用字典会覆盖其他同名的键。有时,在 HTML 表单中,一个帖子可以包含使用 self.request.get_all('key')
获取的同一个键的多个值。那么如何创建一个字典(或相等的东西)来支持具有相同键的多个 key=value 。
..弗雷德里克
最佳答案
我认为您想要做的是准备一个 webapp Request 对象,然后调用处理程序的 post 方法:
from google.appengine.ext.webapp import Request
from google.appengine.ext.webapp import Response
from StringIO import StringIO
form = 'msg=hello'
handler.response = Response()
handler.request = Request({
'REQUEST_METHOD': 'POST',
'PATH_INFO': '/',
'wsgi.input': StringIO(form),
'CONTENT_LENGTH': len(form),
'SERVER_NAME': 'hi',
'SERVER_PORT': '80',
'wsgi.url_scheme': 'http',
})
handler.post()
提示:上面的“msg=hello”在这种情况下工作正常,但要传递多个 POST 参数,您需要创建一个 URL 编码字符串:
>>> form = {
... 'first_name': 'Per',
... 'last_name': 'Thulin',
... }
>>> from urllib import urlencode
>>> urlencode(form)
'first_name=Per&last_name=Thulin'
如果你想传入多个同名的POST参数,我想你需要自己做一点url编码的工作。例如:
>>> from urllib import urlencode
>>> form_inputs = [
... {'someparam': 'aaa'},
... {'someparam': 'bbb'},
... {'someparam': 'ccc'},
... ]
>>> '&'.join([urlencode(d) for d in form_inputs])
'someparam=aaa&someparam=bbb&someparam=ccc'
然后在RequestHandler中,可以使用Request.get_all方法提取参数。
关于python - 如何在 python 中模拟 POST 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3966585/
我是一名优秀的程序员,十分优秀!