2014-12-15 2 views
4

Я играл с Python/Flask на Cloud9 ide. Довольно забавно. Но когда я пытаюсь добавить http-сообщение в свой тестовый проект, Flask возвращает либо 403, либо 500. Из того, что я могу сказать, когда я прикрепляю данные или отправляю метод POST, объект «запрос» - «Нет». Однако это не имеет смысла. Это довольно прямолинейно и должно работать, насколько я могу судить. Вот питон:Является ли HTTP-сообщение заблокированным Cloud9?

from flask import Flask, jsonify, abort, request 
@app.route('/test', methods = ['POST']) 
def post(): 
    print ('started') 
    print request 
    if request.method == 'POST': 
     something = request.get_json() 
     print something 

Колба работает нормально. Я могу ударить GET url, вернув данные просто отлично. Я получаю сообщение об ошибке, когда я прихожу к «запросу печати», потому что запрос «Нет».

Спасибо,

+0

Как вы прикрепляете данные к публикации? Можете ли вы показать пример? – munk

+0

Я использую Postman для его проверки. Я попробовал его с данными формы и необработанными данными, но запрос всегда отсутствует. – shelbydz

ответ

1

У вас есть две проблемы здесь:

  • Вы получаете ошибку 500

  • "что-то" не всегда Ни

Первый проблема в том, что вы ничего не возвращаете из своей функции маршрута.

127.0.0.1 - - [15/Dec/2014 15:08:59] "POST /test HTTP/1.1" 500 - 
Traceback (most recent call last): 
    ...snip... 
    ValueError: View function did not return a response 

Вы можете исправить это, добавив оператор возврата в конце функции. Не забывайте, что это должна быть строка.

@app.route('/hi', methods = ['POST']) 
def post(): 
    return "Hello, World!" 

Вторая проблема не в том, что кажется. Я подозреваю, что объект не None, но функция, возвращающая строковое представление, возвращает None, так что это печатает. Попробуйте print type(request), чтобы увидеть это в действии.

Я думаю, что вы хотите получить доступ к полем form. Вот полный пример:

from flask import Flask, request 

app = Flask(__name__) 

@app.route('/test', methods = ['POST']) 
def post(): 
    print type(request) 
    if request.method == 'POST': 
     print request.form 
    return str(request.form) 

app.run(debug=True) 
+0

здесь были две «есть, чтобы вернуть строку». Я уверен, что его документально подтвердили, но я просто этого не видел. А response.get_json() ничего не делал. Но да, то, что я хотел видеть, действительно было по запросу. Огромное спасибо! – shelbydz

Смежные вопросы