Comment l'afficheur clignote message sans avoir à recharger la page en Flacon?
Je travaille sur une application web à l'aide de Flacon en Python.
J'ai petite fonction dans mon application qui calcule des valeurs dans l'arrière-plan et affiche le résultat sur la page web via un clignotement du message.
Tout ce qui est de l'affichage et de travail bien, mais cela nécessite de recharger la page pour obtenir le clignotement du message.
Je veux afficher des messages sans avoir à recharger la page.
J'ai entendu dire que je peux le faire avec du js, mais je ne suis pas familier avec js.
Si vous avez des idées ou des suggestions, je serais reconnaissant.
Il est mon code qui pourrait construire une meilleure image de ce que je fais.
C'est le moteur de rendu entre mon application et le fichier html principal
HTML:
{% macro render_field(field) %}
<dt> {{ field.label }}
<dd> {{ field(**kwargs)|safe }}
{% if field.errors %}
<ul class=errors>
{% for error in field.errors %}
<li>{{ error }}</li>
{% endfor %}
</ul>
{% endif %}
</dd>
{% endmacro %}
C'est le fichier html j'en veux pour afficher des messages clignotants:
HTML:
<div class="container-fluid" style="min-height:100%">
{% with messages = get_flashed_messages() %}
{% if messages %}
{% for message in messages %}
<div class="alert alert-warning alert-dismissible" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
{{message}}
</div>
{% endfor %}
{% endif %}
{% endwith %}
</div>
Vous devez vous connecter pour publier un commentaire.
Voici ce que Flacon de Développement Web: Développement d'Applications Web avec Python (pp. 46-48) est-à-dire de Message Clignotant:
Il est parfois utile de donner à l'utilisateur une mise à jour de statut après une demande est terminée. Cette
pourrait être un message de confirmation, un avertissement ou une erreur. Un exemple typique est quand vous
soumettre un formulaire de connexion à un site web avec une erreur et le serveur répond par le rendu
nouveau le formulaire de connexion avec un message ci-dessus, il vous informe que votre nom d'utilisateur ou
le mot de passe n'est pas valide.
Flacon comprend cette fonction comme une fonction de noyau. Exemple 4-6 montre comment le
flash()
la fonction peut être utilisée à cette fin.
Exemple 4-6. hello.py: Flashé messages
Dans cet exemple, chaque fois qu'un nom est soumis, il est comparé avec le nom enregistré
dans la session de l'utilisateur, qui ont été mis lors d'une précédente présentation de
la même forme. Si les deux noms sont différents, les
flash()
fonction est appelée avec unle message à afficher sur la prochaine réponse envoyée au client.
Appel
flash()
n'est pas suffisant pour obtenir des messages affichés; les modèles utilisés par ledemande de nécessité de rendre ces messages. Le meilleur endroit pour rendre flashé messages est
le modèle de base, parce que cela va permettre à ces messages dans toutes les pages. Flacon fait un
get_flashed_messages()
fonction disponible pour les modèles de récupérer les messages etrendre, comme montré dans l'Exemple 4 à 7.
Exemple 4-7. templates/base.html: message Flash rendu
Dans cet exemple, les messages sont rendus à l'aide de Bootstrap alerte styles CSS pour l'alerte
les messages (l'un est illustré dans la Figure 4-4).
La Figure 4-4. Flashé message
Une boucle est utilisée, car il pourrait y avoir plusieurs messages en file d'attente pour l'affichage, l'un pour
chaque fois
flash()
a été appelé dans le précédent cycle de la demande. Les Messages sont récupérés à partir d'get_flashed_messages()
ne sera pas retourné la prochaine fois que cette fonction est appelée,donc flashé messages apparaissent qu'une seule fois et sont ensuite rejetées.
Ce n'est pas possible via Python sans avoir à recharger la page. Vous devez le faire en javascript. Je suggère le style CSS avec
display: none
etdisplay: block
. Ici est un exemple.1) du Code Python, cela devrait aller dans votre
app.py
ouflask.py
fichier.Ce sera le rendu de la page HTML nommée
flash.html
. L'URL passée en aura aussi un autre argument,<message>
c'est le message qui clignote. Une URL comme ceci,localhost:80/flash/Hello%20World!
clignote le message "Hello World!" sur votre écran.Il y a aussi une autre façon de faire passer un message, c'est la volonté des arguments. Le code c'est comme si.
Il utilise la fiole demande d'arguments. Si une URL comme ceci,
localhost:80/flash?msg=Hello%20World!
donnera un clignotant, le message "Hello World!". Si vous souhaitez utiliser cette méthode, assurez-vous d'avoir de l'instruction d'importation,from flask import request
dans vos déclarations d'importation.2) le Code Html, c'est un fichier séparé nommé,
flash.html
dans votre dossier de modèles.La
1000
dans la fonction setInterval est de quelques millisecondes. De sorte que le titre sera clin toutes les 2 secondes.setInterval
est comme un fil. Je ne suis pas sûr de savoir comment corriger je suis sur de cela, mais je sais qu'il va continuer de lire le script après lesetInterval
qui se passe.flask.py
fichier. La variable est transmis comme vous rendre le modèle. La variable est passé par là avecrender_template
fonction. La variable peut ensuite être consulté dans le flacon de code avec{{ variable }}
.message
.Vous pouvez envisager d'utiliser Toastr à la place. J'ai couru dans le même endroit, avec le Flacon de la fonction de Flash, et Toastr est de la pure JS. Vous pouvez l'utiliser comme un journal de la console de ligne dans votre code
toastr.info("Here's a message to briefly show to your user");