2017-08-01 4 views
0

J'ai un formset dynamique (en utilisant des formes croustillantes) pour définir les prix des objets. J'ai besoin d'afficher le nom de ces objets pour les utilisateurs, afin qu'ils sachent pour quel objet ils fixent le prix. Cependant, ces noms sont choisis par les utilisateurs eux-mêmes sous une forme différente. Il semble plus évident d'utiliser la classe HTML pour cela (dans Layout), mais c'est pour le rendu des templates Django. Laisser les utilisateurs ajouter du code de modèle entraîne des problèmes de sécurité.Ajouter du HTML non-modèle à la disposition de formulaires croustillants

Une solution à laquelle je pensais est de "l'échapper" manuellement, par ex. en l'enveloppant dans une balise {% verbatim XXXXXX %}, avec XXXXXX une chaîne sécurisée au hasard, ou en remplaçant toute accolade par son code de caractère HTML. Mais ces deux solutions semblent assez hacky et sujettes à des erreurs et donc à des problèmes de sécurité.

Existe-t-il un moyen plus simple d'insérer du HTML pur dans une mise en page de formulaires croustillante?

Répondre

1

Il est vraiment facile de créer vos propres objets de mise en page croustillants, ils ont seulement besoin d'une fonction de rendu qui retourne la chaîne à insérer dans le formulaire. Vous pouvez écrire votre propre version de la classe HTML comme ceci:

class SafeHTML: 
    def __init__(self, html): 
     self.html = html 

    def render(self, *args, **kwargs): 
     return str(self.html)