web-dev-qa-db-fra.com

Utilisez les balises de modèle Django dans jQuery/Javascript?

Puis-je utiliser les balises de modèle de Django dans Javascript? C'est comme utiliser {% form.as_p %} dans jQuery pour ajouter dynamiquement des formulaires à la page.

22
john2x

Oui, je le fais souvent. Votre javascript doit être servi via Django, mais si vous l'avez simplement dans l'en-tête html en javascript intégré, tout ira bien.

E.g: J'utilise ceci pour mettre un préfixe sur un formset dynamique que j'utilise.

{% extends "base.html" %}
{% block extrahead %}
<script type="text/javascript">
$(document).ready(function() {
    {# Append fields for dynamic formset to work#}
    {% for fset, cap, _, tid in study_formsets.fset_cap_tid %}
        $(function() {
            $('.form_container_{{ tid }}').formset({
                        prefix: '{{ fset.prefix }}',
                        formCssClass: '{{ tid }}',
                        extraClasses: ['myrow1', 'myrow2']
                    });
        });
    {% endfor %}
});
</script>
{% endblock %}

Note dans "base.html" J'ai un code HTML head où les bibliothèques jquery sont chargées, qui contient {% block extrahead %}{% endblock %}.

27
dr jimbob

Vous ne pouvez pas utiliser les balises de modèle de Django à partir de votre code Javascript si c'est ce que vous voulez dire. Toutes les variables et la logique Django cessent d'exister après le rendu du modèle et l'envoi de HttpResponse au client. À ce moment-là, lorsque Javascript est exécuté, le client (navigateur) n'a aucune idée des variables avec lesquelles vous avez rendu le modèle (tel que "formulaire").

Ce que vous pouvez faire, c'est que Javascript modifie votre page HTML en utilisant des morceaux de HTML qui ont été rendus par votre modèle Django.

Si vous souhaitez générer du code HTML côté client, nous vous recommandons d’examiner les bibliothèques de tempalte côté client (par exemple. JQuery Templates - utilisez celles avec le {% verbatim%} templatetag ). 

11
Jj.

Si vous voulez utiliser des variables dans votre javascript rendu (pensez-vous que c'est une mauvaise idée). Mais si tout ce que vous voulez, c'est générer une URL pour vos vues, vos fichiers multimédia et vos fichiers statiques, je le fais souvent. 

Jetez un oeil à ce github: jscssmin

0
Gustavo Vargas