2017-03-02 80 views
0

注意:我不知道其他帖子是如何回答這個問題的。我確實發現了以下內容:如果你要打印到瀏覽器,你可以再補充如何打印所有來自python控制器的POST變量

return jsonify(request.form) 

如果要打印到控制檯,您可以添加:

my_data = request.form 
for key in my_data: 
    print ('form key '+key+" "+my_data[key]) 
return render_template("some.html") 

我試圖用以下控制器打印所有POST變量:

from flask import Flask, render_template, request 

app = Flask(__name__) 

@app.route("/") 
def index(): 
    return render_template("index.html") 

@app.route("/register", methods=["POST"]) 
def register(): 

dict = request.form 
for key in dict: 
    print ('form key '+dict[key]) 

但是出現錯誤:

ValueError: View function did not return a response 

這裏是我的形式:

{% extends "layout.html" %} 

{% block title %} 
Frosh IMs 
{% endblock %} 

{% block body %} 
<h1>Register for Frosh IMs</h1> 
<form action="{{ url_for('register') }}" method="post"> 
    Name: <input name="name" type="text"/> 
    <br/> 
    Dorm: 
    <select name="dorm"> 
     <option value=""></option> 
     <option value="Apley Court">Apley Court</option> 
     <option value="Canaday">Canaday</option> 
     <option value="Grays">Grays</option> 
     <option value="Greenough">Greenough</option> 
     <option value="Hollis">Hollis</option> 
     <option value="Holworthy">Holworthy</option> 
     <option value="Hurlbut">Hurlbut</option> 
     <option value="Lionel">Lionel</option> 
     <option value="Matthews">Matthews</option> 
     <option value="Mower">Mower</option> 
     <option value="Pennypacker">Pennypacker</option> 
     <option value="Stoughton">Stoughton</option> 
     <option value="Straus">Straus</option> 
     <option value="Thayer">Thayer</option> 
     <option value="Weld">Weld</option> 
     <option value="Wigglesworth">Wigglesworth</option> 
    </select> 
    <br/> 
    <input type="submit" value="Register"/> 
</form> 
{% endblock %} 
+0

也不要命名的東西內置後,所以叫它'your_dict'或者什麼的而不是'字典' – bernie

+0

我不明白。如果我返回render_template,我只會渲染該模板。因爲我可以做,如果request.form [「名稱」]我不能做dict = request.form我從這裏:http://stackoverflow.com/questions/25410944/print-all-post-request-parameters-不知道他們的名字 – DCR

+0

我明白你在說什麼。但是你得到的錯誤是因爲該視圖沒有返回任何東西。 – bernie

回答

2

你需要瓶中的東西返回到瀏覽器:

from flask import jsonify 

@app.route("/register", methods=["POST"]) 
def register(): 
    # this line goes to the console/terminal in flask dev server 
    print request.form 
    # this line prints out the form to the browser 
    return jsonify(request.form.to_dict()) 

Multidict to_dict() method返回從MultiDict正常的Python字典。

+0

謝謝,我們到了那裏。如果我只是添加行返回jsonify(request.form.to_dict())它打印出的POST變量。爲什麼我不需要打印語句,並且不應該在jsonify語句之後打印request.form? – DCR

+0

燒瓶是一個Web框架。它是與客戶端(例如網絡瀏覽器)通信的「服務器」端。 'print'會將文本寫入[server stdout](http://stackoverflow.com/questions/3385201/confused-about-stdin-stdout-and-stderr),如果您從終端運行flask dev服務器,將成爲終端窗口。一旦視圖函數使用'return',那麼之後的任何行都將被忽略。你應該考慮複習一些教程,因爲這實際上是燒瓶的基本功能,以及HTTP的工作方式。 – abigperson

+0

謝謝,我現在正在工作。有沒有辦法像PHP的print_r函數一樣控制打印到Web瀏覽器? – DCR