一尘不染

在同一Flask视图中处理GET和POST

flask

request.form["name"]例如,当我键入要从POST提交的表单中检索名称时,是否还必须编写一个类似于以下内容的单独分支request.form.get["name"]?如果我想同时支持这两种方法,是否需要为所有POST和所有GET请求编写单独的语句?

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

阅读 511

收藏
2020-04-06

共1个答案

一尘不染

你可以使用区分实际方法request.method

我假设你要:

  • 使用GET方法触发路线时渲染模板
  • 读取表单输入并注册用户(如果通过以下方式触发了路线) POST
    因此,你的案例类似于文档中所述的案例:Flask Quickstart-HTTP Methods
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)
2020-04-06