2015-02-25 3 views
0

Как мне ответить на запрос на получение с помощью Flask? Я ничего не нашел в документации, мне трудно понять, я также искал в Интернете и ничего не нашел.Как мне ответить на запрос на получение с помощью Flask?

У меня есть форма вот часть кода:

<input type="radio" name="topic" value="{{ topic }}" id="{{ topic }}" onclick="submit()"> 

Теперь, как вы можете видеть из этого, вход посылает значение «темы» при представлении.

Как я могу использовать Flask для ответа на любой запрос GET, такой как этот вход? Что-то вроде этого:

@app.route('/topic/[any 'topic' value from form]', methods=['GET']) 
def topic(): 
    topic = request.form['topic'] 
    return render_template('topic.html', topic=topic) 

Спасибо.

UPDATE:

Так что я решил использовать пост как это было предложено. Я пытался проверить почту с этим кодом:

@app.route('/topic/', methods=['POST']) 
def topic(): 
    chosenTopic = request.form['chosenTopic'] 
    return render_template('topic.html', chosenTopic=chosenTopic) 

и этой формой:

<input type="radio" name="chosenTopic" value="{{ topic[3:topic|length-4:] }}" id="chosenTopic" onclick="submit()"> 

Я проверил его на/тему странице с простым {{chosenTopic}}, но ничего не появляется? Есть ли у кого-нибудь какие-либо предложения относительно того, почему?

+0

Что вы подразумеваете под какой темой? –

+0

Извините, я не понимаю, что вы имеете в виду? – user2426062

+0

Значение вашей конечной точки содержит [любое значение «темы» из формы]. Вы спрашиваете, как включить ввод из формы в URL-адрес запроса? –

ответ

1

Что-то вроде этого показывает простой пример.

from flask import Flask, request, redirect 

app = Flask(__name__) 

# really look in db here or do whatever you need to do to validate this as a valid topic. 
def is_valid_topic(topic): 
    if topic == "foo": 
     return False 
    else: 
     return True 

@app.route('/') 
def index(): 
    return '<html><form action="topic/" method="post"><input name="topic" type="text"><input type="submit"/></form></html>' 

@app.route('/topic/', methods=['POST']) 
def find_topic(): 
    t = request.form['topic'] 
    if is_valid_topic(t): 
     return redirect('topic/%s' % t) 
    else: 
     return "404 error INVALID TOPIC", 404 

@app.route('/topic/<topic>') 
def show_topic(topic): 
    if is_valid_topic(topic): 
     return '''<html><h1>The topic is %s</h1></html>''' % topic 
    else: 
     return "404 error INVALID TOPIC", 404 

if __name__ == '__main__': 
    app.run(debug=True) 

Вы принимаете параметры в запросе POST и затем перенаправляете GET.

+0

Спасибо, что это великолепно! Цените помощь, однако у меня есть еще один вопрос. Скажем, я хотел использовать POST для отправки чего-то при щелчке изображения, как бы я это сделал, потому что я не использую форму? – user2426062

+0

Поместите его в новый вопрос. –

+0

Несомненно, спасибо за вашу помощь. – user2426062

Смежные вопросы