我遇到了使用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')
问题是
答案 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>