Heim  >  Fragen und Antworten  >  Hauptteil

Verwenden Sie die Jinja-Vorlage/Flask, um die Darstellung verschachtelter HTML-Absätze mit fetter Änderung zu implementieren

Ich möchte eine Funktion erstellen, die Wörter aus einem Satz entfernt und das entfernte Wort dann durch andere Wörter ersetzt, die aus einer Wörterbuch-API-Suche stammen.

Ganz einfach: Dies ist eine Funktion, die prüft, ob ein Wort in einem Satz zur Liste der entfernten Wörter gehört. Wenn dies der Fall ist, ersetzt sie es durch das Ersatzwort. Wenn nicht, fügt sie das ursprüngliche Wort einer neuen Zeichenfolge hinzu. Kein Problem,

Ich brauche Hilfe: Wenn ich F-Strings verwende und Textmodifikatoren hinzufüge, die in HTML-Tags interpretiert werden sollen, ist das die richtige Vorgehensweise? Ich möchte nur den ersetzten Text fett markieren

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)

Wenn ich das HTML-Markup im Browser überprüfe, wird das Absatzelement, das die neue Zeichenfolge enthält, korrekt kompiliert, z. B.

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

Das Problem besteht jedoch darin, dass <b> im endgültigen Markup enthalten ist, aber nicht gerendert wird. Vermisse ich hier etwas?

Während des Rendervorgangs lautet das Flask-Vorlagen-Tag, für das der Absatz aufgerufen wird, und das <p>, das Frage[0] enthält, ist der neue Rendering-String-Wert, den ich besprochen habe.

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>

Danke für deine Hilfe!

P粉170438285P粉170438285210 Tage vor629

Antworte allen(1)Ich werde antworten

  • P粉087074897

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

    默认情况下,Jinga会自动转义变量中的字符,如 >、<(当使用{{question[0]}}时)。

    如果你对question[0]的构造方式有信心,你可以通过将<p id="question">{{question[0]}}</p>改为<p id="question">{{question[0] | safe }}</p>来绕过这种自动转义。

    更多信息请参考:https://jinja.palletsprojects.com/en/3.0.x/templates/#html-escaping

    Antwort
    0
  • StornierenAntwort