Python Flacon en appelant les fonctions à l'aide de boutons
Une fois sur le bouton dans ma gourde modèle est pressé j'aimerais qu'il appel une fonction python définis dans app.py que j'ai fait pour être disponible pour être appelé au sein du modèle en tapant ce qui suit ci-dessous où j'définir la fonction:
Exemple de fonction dans app.py:
@app.route('/foo')
def foo(x,y):
pass
app.jinja_env.globals.update(foo=foo)
Modèle:
<button type="button" onclick="myFunction(this)" name="enable" id="{{counter}}"> Enable </button>
Dans mon bouton, j'ai l'attribut onclick juste pour tester que le bon bouton est pressé à l'aide de javascript comme tel:
{% block scripts %}
{{ super() }}
<script>
function myFunction(elem){
if(confirm('Are you sure you want to ' + elem.name) == true){
alert("its done.");
}
else {
return false;
}
}
</script>
{% endblock %}
La question que je me pose est que j'ai besoin de la fonction que je suis en train de faire disponibles au sein du modèle correspondent le bon bouton. Par exemple, si le bouton Activer, puis j'ai besoin d'appeler la fonction de validation définies ou autrement, si le bouton correspond à false, je voudrais désactiver la fonction à utiliser.
Je me sens comme je suis dirigé dans la bonne direction, mais ne peut pas sortir de cette pièce. Veuillez être aussi précis que vous le pouvez.
OriginalL'auteur Sean | 2015-06-17
Vous devez vous connecter pour publier un commentaire.
Si vous voulez exécuter votre fonction sans générer une requête au serveur, votre fonction doit être définie dans le code JavaScript. Sinon, vous avez besoin pour tirer d'une requête HTTP.
Maintenant, dans votre cas, si vous essayez de faire est d'activer/désactiver les boutons, il serait judicieux de faire tout ça en javascript (pas besoin d'aller sur le serveur).
Exemple:
javascript
Toutefois, si ce que vous voulez est d'appeler une méthode sur votre serveur, par exemple, envoie un e-mail, alors vous devriez utiliser un
form
POST/GET ouAJAX
POST/GETExemple:
app.py
modèle
Lorsque vous cliquez sur "Envoyer un Courriel" une requête HTTP POST est envoyé à "/foo" sur votre demande. Votre fonction
foo
pouvez maintenant extraire des données à partir de la demande et de faire ce qu'il veut faire sur le serveur d'un côté, puis de renvoyer une réponse au client de navigateur web.Il suggère d'aller à travers le Flacon De Tutoriel pour obtenir une meilleure compréhension de client/serveur interactions lorsqu'il s'agit pour les applications web créées avec Flacon.
Vous ne pouvez pas appeler une fonction python directement à partir de JavaScript car, dans ce cas, votre JavaScript est exécuté sur un navigateur sur le client et votre fonction Python existe sur le serveur. La seule façon de faire que la communication est arriver à envoyer une requête HTTP sur votre serveur. C'est ce que ma réponse est suggéré. Si ce que vous essayez de faire est purement visuelle, comme la désactivation ou le masquage d'un bouton, ce qui peut être réalisé entièrement en JavaScript. Est-ce que vous avez l'intention?
Voir mon edit pour la manipulation de bouton avec le javascript, si c'est ce que vous essayez de faire
Ah, je vois. Je n'essaie pas juste changer le texte sur la page de serveur sans quelque chose qui se passe réellement sur le backend. La fonction que j'ai accomplit ce tout à fait ce dont j'ai besoin désactivé sur le côté serveur. Donc j'ai besoin d'une requête HTTP pour faire cela, alors. Je vais rechercher sur le sujet demain. Merci pour les conseils.
Cela fonctionne comme un charme
OriginalL'auteur junnytony