recherche

Maison  >  Questions et réponses  >  le corps du texte

Utilisation du modèle/Flask Jinja pour implémenter le rendu des paragraphes HTML imbriqués avec modification en gras

Je cherche à créer une fonction qui supprime des mots d'une phrase, puis remplace le mot supprimé par d'autres mots obtenus à partir d'une recherche API dans un dictionnaire.

Très simple, il s'agit d'une fonction qui vérifie si un mot dans une phrase appartient à la liste des mots supprimés, si c'est le cas, le remplace par le mot de remplacement, sinon, ajoute le mot d'origine à une nouvelle chaîne. Pas de problème,

J'ai besoin d'aide, c'est si j'utilise des chaînes F et que j'ajoute des modificateurs de texte à interpréter dans les balises HTML, est-ce la bonne façon de procéder ? Je veux juste mettre en gras le texte remplacé

if word in removed_words:
               print("our word for the dictionary is", word)  
               res =  dictionary.meaning(word.capitalize())

               if res != None:
              
                   if res.get('Noun'):
                      print("our definition is", "---> ", res['Noun'][0], " <----")
                      remaining_words.append(f"""{res['Noun'][0]}""")

                   elif res.get('Verb'):
                        print("our definition is", "---> ", res['Verb'][0], " <----")
                        remaining_words.append(f"""{res['Verb'][0]}""")

               else:
                    remaining_words.append(f"""{r.word()}""")
             
           else:
                remaining_words.append(word)

Lorsque j'inspecte le balisage HTML dans le navigateur, l'élément de paragraphe contenant la nouvelle chaîne est compilé correctement, comme

<p>This is the new sentence with the <b>replaced word</b> and the other words</p>

Le problème, cependant, est que <b> est implicite dans le balisage final, mais n'est pas rendu. Est-ce que j'ai râté quelque chose?

Pendant le processus de rendu, la balise de modèle Flask à laquelle le paragraphe est appelé est la suivante, et la question contenant <p>[0] est la nouvelle valeur de chaîne de rendu dont j'ai parlé.

h3 class="header3 head4">{{heading}}

<p id="question">{{question[0]}}</p>

<button id="showanswer">Show the Answer</button>
<p id="answer">{{question[1]}}</p>

<form  id="submitanswer" method="post", action="/quiz/processanswer">
<input id="useranswer" type="text" name="answer" placeholder="Enter your answer">
<input id="hiddenanswer" name="hiddenanswer" type="text" value="{{question[1]}}" 
 id="hiddenanswer">
 <button id="answerSubmit">Submit</button>
 </form>

Merci pour votre aide !

P粉170438285P粉170438285246 Il y a quelques jours685

répondre à tous(1)je répondrai

  • P粉087074897

    P粉0870748972024-03-23 09:57:34

    Par défaut, Jinga échappera automatiquement les caractères dans les variables, tels que >, < (lors de l'utilisation de {{question[0]}}).

    Si vous êtes sûr de la façon dont la question[0] est construite, vous pouvez contourner cet échappement automatique en le remplaçant par <p id="question">{{question[0]}}</p>改为<p id="question">{{question[0] | safe }}</p>.

    Pour plus d'informations, veuillez vous référer à : https://jinja.palletsprojects.com/en/3.0.x/templates/#html-escaping

    répondre
    0
  • Annulerrépondre