2015-06-19 103 views
1

我正在通過GET請求正確發送和接收變量。我也無法在網上找到任何信息。從下面的HTML表單中,您可以看到我發送的是'問題'的值,但我也從表單中的單選按鈕接收'主題'(儘管代碼不是這樣)。使用Flask發送和接收GET請求的問題

我想使用POST發送'topic',但是使用GET來處理'question'。我知道表單方法是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. 我該如何去接收這兩個變量?
+0

據我所知,你不能以相同的形式發送GET和POST變量。看到這個答案:http://stackoverflow.com/a/6919024/3516028 – tomasyany

+0

你不會發送'topic'作爲POST,你發送它作爲URL本身的一部分。我不知道你爲什麼要在這裏發佈。 –

+0

你在請求對象中有's',而在'question'中的URL中沒有's', –

回答

1

您的問題的簡短答案是,您不能同時發送GET和POST兩個表​​單。

但是,如果你想看看你的網址像您指定:

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

那麼你幾乎沒有。首先,您需要知道該主題的名稱,因爲您必須在撥打電子郵件url_for()時指定該問題的url。

<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,一個asumming你有名稱的輸入字段question,你就可以獲得該字段的價值。