2017-10-21 71 views
-3

J'essaie de créer une page Web en HTML dans laquelle un utilisateur doit entrer une URL dans un champ de texte.405 lors de la soumission du formulaire à l'application Flask

<form name="submitURL" method ="post"> 
<input type="text" name="url_target"> 
<button type="submit">submit</button> 

Lorsque la presse utilisateur sur le bouton soumettre un script python doit intercepter les données insérées par l'utilisateur et de passer à une autre fonction dans ce script.

script Python:

from flask import Flask, render_template, request 

app = Flask(__name__) 

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

@app.route('/index.html', methods = ['POST']) 
def result(): 
    result = request.form('url_target') 
    link = result.link 
    print (link) 
    return 

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

le premier rendu est très bien et je peux voir la page index.html, mais quand j'insérer quelque chose dans le champ de texte apparaît l'erreur HTTP 405.

Avez-vous une suggestion pour cela? :( Merci!

+1

Ceci est Flask, pas Django. –

+0

Merci pour l'annotation Daniel, j'apprends ces deux jours et j'ai fait de la confusion en écrivant :) – ySlag

Répondre

1

Vous avez oublié action="{{ url_for('result') }}" dans votre balise <form>, de sorte que vous soumettez le formulaire à la même page, qui n'accepte pas les requêtes POST.

De plus [] et non () pour y accéder link = result.link va échouer aussi car il n'y a aucun moyen que l'attribut link existe sur la chaîne que vous obtenez de request.form ...

+0

Merci pour votre temps :) – ySlag

1

Votre fonction

result() ne retourne rien.
+0

Le point n'est pas que je suppose .. Je veux dire, la fonction retournera l'URL à l'avenir, mais l'erreur reste même si j'ajoute quelque chose à retourner – ySlag