【问题标题】:Missing form data in request请求中缺少表单数据
【发布时间】:2016-08-24 12:21:42
【问题描述】:

我有以下代码

class MyClass(restful.Resource):

    def get(self):
        headers = {'Content-Type': 'text/html'}
        return make_response(render_template('myfile.html'),200,headers)

    def post(self):
            session['CONSUMER_KEY']=request.form.get('consumer_key')
            session['CONSUMER_SECRET']=request.form.get('consumer_secret')
            render_template('myfile.html')

api.add_resource(MyClass,"/mag/",endpoint="mag")

我写了以下测试:

   def mytest(self):
        content_type={"Content-Type": "application / x - www - form - urlencoded","Content-Disposition": "form-data"}
        response = self.client.post(
            api.url_for(MyClass), data = json.dumps({'consumer_key':'testconsumerkey',
                        'consumer_secret':'testconsumersecret'}),
            headers=content_type
        )

问题是表单数据是空白的,这就是会话中没有设置值。当我调试时,我看到 request.data 已填充,但 request.form 是一个空字典。有人可以建议我如何在测试的发布请求中发送表单数据

编辑:环境细节 Python 2.7,Flask Web 框架,self.client 是 .我正在使用 flask.ext.testing

【问题讨论】:

  • 您能添加一些有关您的环境的详细信息吗?是烧瓶吧? self.client 在你的测试中是什么类型?
  • Python 2.7,Flask web 框架,self.client 是

标签: python-2.7 post flask request


【解决方案1】:

您似乎对帖子正文的预期格式感到困惑。它应该是 JSON 数据(这是您在测试用例中发送的内容),还是应该是 application/x-www-form-urlencoded 格式(您声称在测试用例中发送的内容,以及端点将读取的内容)?

如果您希望接收 JSON 数据,则需要更改端点以从 request.get_json() 读取数据。您还需要在测试用例中使用 application/json 作为 Content-Type 标头。

如果您希望接收 urlencoded 发布数据,则只需通过删除 Content-Type 标头和 json.dumps 来简化测试用例。只需将数据字典传递给 data 参数即可。

【讨论】:

    猜你喜欢
    • 2011-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-02
    相关资源
    最近更新 更多