如何从python控制器打印表单中的所有POST变量

如何从python控制器打印表单中的所有POST变量,python,post,printing,flask,Python,Post,Printing,Flask,注意:我不知道另一个帖子是如何回答这个问题的。我确实发现了以下几点: 如果要打印到浏览器,只需添加: 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

注意:我不知道另一个帖子是如何回答这个问题的。我确实发现了以下几点:

如果要打印到浏览器,只需添加:

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 %}
{%extends“layout.html”%}
{%block title%}
泡沫IMs
{%endblock%}
{%block body%}
弗罗什智能弹药系统寄存器
姓名:

宿舍: 阿普利法院 卡纳迪 灰色 格林诺 霍利斯 霍尔沃西 赫尔布特 莱昂内尔 马修斯 割草机 彭尼帕克 斯托顿 斯特劳斯 塞耶 焊接 威格斯沃斯
{%endblock%}
您需要将某些内容返回到浏览器:

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返回一个普通python dict。

您需要将某些内容返回到浏览器:

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返回一个普通的python dict。

也不以内置的名称命名,所以将其称为
your_dict
或其他东西,而不是
dict
,我不明白。如果我返回render_template,我将只渲染该模板。既然我可以做if request.form[“name”]我就不能做dict=request.form我是从:我明白你在说什么了。但是您得到的错误是因为该视图没有返回任何内容。另外,当我将dict更改为my_dict时,我得到的是TypeError:“type”对象不是iterable,我得到的是该视图没有返回任何内容,我该如何修复它呢?也不要用内置的名字来命名东西,所以叫它
your_dict
或者别的什么,而不是
dict
,我不懂。如果我返回render_template,我将只渲染该模板。既然我可以做if request.form[“name”]我就不能做dict=request.form我是从:我明白你在说什么了。但是您得到的错误是因为该视图没有返回任何内容。另外,当我将dict更改为my_dict时,我返回TypeError:“type”对象不是iterableI,我知道该视图没有返回任何内容,我如何修复它?谢谢,我们就到了。如果我只添加一行return jsonify(request.form.to_dict()),它将输出POST变量。为什么我不需要print语句,print request.form不应该在jsonify语句之后?Flask是一个web框架。它是与客户端(例如web浏览器)通信的“服务器”端
print
将写入文本,如果您从终端运行flask dev服务器,该文本将成为终端窗口。一旦视图函数使用了
return
,之后的任何行都将被忽略。你应该考虑复习一些教程,因为这实际上是烧瓶是什么,做什么,HTTP是如何工作的。谢谢,我现在开始工作了。有没有一种方法可以像PHP的print_r函数那样控制向web浏览器的打印?您需要使用jinja模板(例如
return render_template('page.html',data=request.form.to_dict())
而不是
jsonify()
),并在模板中使用Jinja2,如
{data | pprint}
谢谢,我们马上就到了。如果我只添加一行return jsonify(request.form.to_dict()),它将输出POST变量。为什么我不需要print语句,print request.form不应该在jsonify语句之后?Flask是一个web框架。它是与客户端(例如web浏览器)通信的“服务器”端
print
将写入文本,如果您从终端运行flask dev服务器,该文本将成为终端窗口。一旦视图函数使用了
return
,之后的任何行都将被忽略。你应该考虑复习一些教程,因为这实际上是烧瓶是什么,做什么,HTTP是如何工作的。谢谢,我现在开始工作了。有没有一种方法可以像PHP的print_r函数那样控制向web浏览器的打印?您需要使用jinja模板(例如
return render_template('page.html',data=request.form.to_dict())
而不是
jsonify()
),并在模板中使用Jinja2,比如
{data}pprint}