2017-10-19 12 views
0

Voici mon code actuellement (en omettant les bibliothèques et les autres parties inutiles):Comment Recharger la page Web basée sur Flask après formulaire de soumission

app = Flask(__name__) 

    class SearchForm(Form): 
     inputString = TextAreaField('', [validators.DataRequired()]) 

    @app.route('/') 
    def index(): 
     return render_template('Website.html') 

    @app.route('/results', methods=['POST']) 
    def results(): 
     ... 
     form = SearchForm(request.form) 
     if request.method == 'POST' and form.validate(): 
      inputString = request.form['inputString'] 
     ... 
     return render_template('Website.html', cLinkName=cLinkName, \ 
               lLinkName=lLinkName) 

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

Et voici la page web (ne montrant que la forme et les variables qui sont modifiées lorsque le SearchForm est soumis):

<form method=post action="{{url_for('results')}}" style="text-align: center;"> 
     <input type="text" id="inputString" name="inputString"/> 
     <input type=submit value='Search' name='search_btn'> 
    </form> 
    <table align="center" border="1"> 
     <tr> 
      <td style='text-align: center;'>{{ cLinkName }}</td> 
      <td style='text-align: center;'>{{ lLinkName }}</td> 
     </tr> 
    </table> 

Tout d'abord, je l'ai regardé Flask: redirect to same page after form submission et je crois que j'ai essayé de mettre en œuvre ce qui a été accepté comme la bonne réponse, mais cela n'a pas fonctionné pour moi depuis que je suis également en train de présenter variables à la mise à jour page Web plutôt que simplement actualiser la page Web.

Je veux être en mesure de soumettre SearchForm de la page Web et puis mettre à jour ma page Web avec le produit cLinkName et lLinkName de soumettre mon SearchForm plus d'une fois. Malheureusement, mon code me permet seulement de soumettre le SearchForm puis de mettre à jour ma page Web avec le cLinkName et le lLinkName produits en soumettant mes SearchForm exactement une fois. Et lorsque j'essaie de recharger la page Web, je reçois une fenêtre contextuelle «Continuer la soumission du formulaire». Donc, ma question est comment puis-je obtenir ma page Web pour me permettre de soumettre le SearchForm et se mettre à jour plus d'une fois?

Après d'autres recherches, Clear valid form after it is submitted, je peux maintenant demander des requêtes GET et veiller à ce que je peux recharger la page localhost/results et soumettre une autre forme, mais il ne fonctionne pas sous la forme par l'algorithme à nouveau.

+1

Qu'est-ce qui est rendu pour votre action de formulaire sur la page? –

+0

La première fois, il imprime des instructions dans le journal de la console qui se trouvent dans l'algorithme et met à jour la page Web une fois la requête POST terminée. À tout autre moment, il ignore l'algorithme et indique immédiatement qu'une demande POST a été effectuée et ne met pas à jour la page Web. –

+1

Ce n'est pas clair pour moi. Essayez-vous de voir tous les 'cLinkName' et' lLinkName' recherchés dans la table? – arsho

Répondre

0

Ajouté return redirect(url_for('results')) comme dernière ligne dans if request.method == 'POST' and form.validate(): corps et tout a bien fonctionné.