35 Stimmen

Wie füge ich HTML in den Hilfstext eines Django-Formularfeldes ein?

Ich habe versucht, Hilfetext für ein Choice Field in meinem Django-Formular zu generieren

i_agree = forms.CharField(label="", help_text="Initial, um zu bestätigen, dass Sie dem 

`[

Allerdings wird der rohe HTML-Code als Ausgabe im Hilfetext gerendert. Wie kann ich HTML in den Hilfetext eines Django-Formularfeldes eingeben?

](stackoverflow.com/contract.pdf'>Vertrag</a> zustimmen.)`

68voto

Furbeenator Punkte 7798

Sie können mark_safe im Modell verwenden, um anzuzeigen, dass der HTML-Code sicher ist und als solcher interpretiert werden soll:

from django.utils.safestring import mark_safe

i_agree = forms.CharField(label="", help_text=mark_safe("Initial to affirm that you agree to the contract."), required=True, max_length="4")

13voto

Fernker Punkte 2099

Sie können es alternativ im Template als sicher markieren, wenn Sie das Formular selbst durchlaufen:

{% for f in form %}
    {{f.label}}{{f}}{{f.help_text|safe}}    
{%endfor%}

Dies ist ein sehr einfaches Beispiel, wie Sie dies im Template tun können. Sie müssten mehr tun, um es schön aussehen zu lassen.

4voto

Édouard Lopez Punkte 35960

Sie können eine externe Datei verwenden, um die Wartbarkeit und Trennung der Anliegen zu erhöhen:

  1. Ändern Sie die __init__() Methode Ihres Formulars ;
  2. nach dem super(MyForm, self).__init__(*args, **kwargs) ;
  3. weisen Sie das Ergebnis von render_to_string() self.fields['my_field'].help_text zu.

forms.py

from django.template.loader import render_to_string

class MyForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(MyForm, self).__init__(*args, **kwargs)
        # Nur wenn das Formular aus einer Instanz erstellt wird,
        if 'instance' in kwargs and kwargs['instance'].nature == consts.RiskNature.RPS:
            self.fields['my_field'].help_text = render_to_string('components/my-template.html')
            #                      ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 

my-template.html

{% load i18n %}

        {% trans 'Extern' %}

              {% trans "In Verbindung mit Arbeitsbeziehungen" %}

              {% trans "-" %}

-6voto

user1206362 Punkte 1

Verwenden Sie ein Textarea-Tag mit readonly

 <p>stuff</p>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X