使用Flask发送和接收GET请求的问题

时间:2015-06-19 21:22:02

标签: python flask request

我遇到了使用GET请求正确发送和接收变量的问题。我也无法在网上找到任何信息。从下面的HTML表单中,您可以看到我发送'问题'的值,但我也从表单中的单选按钮接收'主题'(虽然代码不是在下面)。

我想使用POST发送'主题',但使用GET代表'问题'。我知道表单方法是POST,虽然我不知道如何满足POST和GET。

HTML表格:

<form method="POST" action="{{ url_for('topic', question=1) }}">

我的第二个问题是,我不确定如何从表单中接收“主题”和“问题”。我已经设法接收到如下所示的'主题',但我不太确定如何接收'问题'。优选地,URL最好是这样的:

  

www.website.com/topic/SomeTopic?question=1

对于下面的代码,我在网上发现request.args []用于接收GET请求,虽然我不确定它是否正确。

烧瓶中:

@app.route('/topic/<topic>', methods=['POST', 'GET'])
def questions(topic):
    question = request.args['questions']
    return render_template('page.html')

问题是

  1. 如何使用GET和POST同时从表单发送两个变量用于不同的变量。
  2. 我将如何接收这两个变量?

1 个答案:

答案 0 :(得分:1)

您的问题的简短回答是,您无法使用相同的表单发送GET和POST。

但是如果你想让你的网址看起来像你指定的那样:

www.website.com/topic/SomeTopic?question=1
那时你差不多了。首先,您需要已经知道主题的名称,因为您必须在url_for()的问题中指定问题网址。

<form method="GET" action="{{ url_for('questions', topic_name="cars") }}">
# Your url will be generated as www.website.com/topic/cars

<强>烧瓶

# Note that I changed the variable name here so you can see how
# its related to what's passed into url_for
@app.route('/topic/<topic_name>')
def questions(topic_name):
    question = request.args['question']
    return render_template('page.html')

现在,当您提交表单时,您的输入将作为GET发送,如果您有一个名为question的输入字段,您将能够获得该字段的值。< / p>