当我键入请求时。表单[“name”]
,例如,要从POST提交的表单中检索名称,我还必须编写一个类似于请求的单独分支。类型获取[“名称”]
?如果我想支持这两种方法,我需要为所有POST和GET请求编写单独的语句吗?
@app.route("/register", methods=["GET", "POST"])
def register():
"""Register user."""
我的问题与使用python和Flask获取请求变量的值密切相关。
您可以通过调用validate_on_submit()来处理“POST”方法,以检查表单是否使用有效数据提交,否则默认情况下,您的函数将响应GET请求。您的功能如下所示:
@app.route("/register", methods=["GET", "POST"])
def register():
"""Register user."""
form = SomeForm()
# treat POST request
if form.validate_on_submit():
# do something ...
# return redirect ...
# else response to GET request
# return render_template...
下面是一个例子,在这个例子中,您可以很容易地找到使用POST、GET方法的方法,并使用同样的方法添加其他curd操作。
#libraries to include
import os
from flask import request, jsonify
from app import app, mongo
import logger
ROOT_PATH = os.environ.get('ROOT_PATH')
@app.route('/get/questions/', methods=['GET', 'POST','DELETE', 'PATCH'])
def question():
# request.args is to get urls arguments
if request.method == 'GET':
start = request.args.get('start', default=0, type=int)
limit_url = request.args.get('limit', default=20, type=int)
questions = mongo.db.questions.find().limit(limit_url).skip(start);
data = [doc for doc in questions]
return jsonify(isError= False,
message= "Success",
statusCode= 200,
data= data), 200
# request.form to get form parameter
if request.method == 'POST':
average_time = request.form.get('average_time')
choices = request.form.get('choices')
created_by = request.form.get('created_by')
difficulty_level = request.form.get('difficulty_level')
question = request.form.get('question')
topics = request.form.get('topics')
##Do something like insert in DB or Render somewhere etc. it's up to you....... :)
您可以使用请求来区分实际的方法。方法
。
我假设您想:
GET
methodPOST
因此,您的案例与docs:Flask Quickstart-HTTP方法中描述的案例类似
import flask
app = flask.Flask('your_flask_env')
@app.route('/register', methods=['GET', 'POST'])
def register():
if flask.request.method == 'POST':
username = flask.request.values.get('user') # Your form's
password = flask.request.values.get('pass') # input names
your_register_routine(username, password)
else:
# You probably don't have args at this route with GET
# method, but if you do, you can access them like so:
yourarg = flask.request.args.get('argname')
your_register_template_rendering(yourarg)
问题内容: 例如,当我键入要从POST提交的表单中检索名称时,是否还必须编写一个类似于以下内容的单独分支?如果我想同时支持这两种方法,是否需要为所有POST和所有GET请求编写单独的语句? 问题答案: 你可以使用区分实际方法。 我假设你要: 使用GET方法触发路线时渲染模板 读取表单输入并注册用户(如果通过以下方式触发了路线) POST 因此,你的案例类似于文档中所述的案例:Flask Quick
问题内容: 这是我的视图功能 Ajax发布请求的代码 在视图中,当我尝试打印请求对象时,得到以下数据 但是如果我尝试去做 我得到“无” 有人可以告诉我如何解决这个问题吗? 问题答案: 您将内容类型设置为,但正在发送数据。 设置正确的内容类型: 或更妙的是,通过完全省略键将其保留为默认值。
我已经用flask在python上制作了一个restapi(端口:5000),我正在从一个网站(端口:80)发出get和post请求。我收到了cors错误,所以我尝试在RESTAPI中为站点创建一个响应头。但是我得到了导入错误: 我已经下载了烧瓶cors模块并升级它,并确保它是在正确的路径,但它仍然不工作。 API代码:
我正在建立一个小网站,我已经在SQLAlChemy中拥有了我所有的模型。该网站将发布一些离线计算的信息。只有结果将被发布到一个精简的数据库,即它包含结果,而不是原始数据,但网站需要查询结果。 我将使用Flask,因为我的模型已经用Python驱动了(通过SWIG在C中进行了一些繁重的工作),我不想使用Django。 我敢肯定,以前有人问过这个问题,通常没有太多理由的咒语是“使用炼金术”。问题是为什
问题内容: Flask中是否可以将响应发送给客户端,然后继续进行某些处理?我要完成一些簿记任务,但是我不想让客户等待。 请注意,这些实际上是我想做的非常快的事情,因此在这里实际上不适合创建新线程或使用队列。(这些快速的操作之一实际上是在作业队列中添加一些内容。) 问题答案: 可悲的是,将响应返回给客户端后,拆卸回调不执行: 卷曲时,您会注意到在显示响应之前有2s的延迟,而不是卷曲立即结束,然后在2
我正在使用flask-RESTful开发API,并且对Flask的jsonify函数有问题。我正在使用flask-marshmlet进行JSON序列化。下面是一个非常简化的代码片段: 在本地,endpoint将返回具有键“data”和“error”的json;但是,当在Linux服务器上运行时,它会返回一个包含列表和在没有“data”和“error”键的情况下返回的结果。 我已经确定这种不一致是由