2017-02-01 4 views
2

J'ai écrit un script python qui retourne une liste de valeurs d'une base de données. Je veux incorporer ce script dans mon site django que j'ai créé. J'ai un fichier html en ce moment dans mon dossier de modèles qui a des valeurs de dictionnaire codées en dur, mais comment puis-je remplacer le dictionnaire matériel hardcoded avec le script, permet de l'appeler values.pyDjango-Exécution de code Python en HTML

<script type="text/javascript"> 
$(document).ready(function() { 
    var dropDown = [" ", "Run1", "Run2", "Trail1", "Trail2"]; 
    var dropDownID = [" ", "111111", "222222", "333333", "444444", "555555"]; 
    $("#dropDown").select2({ 
     data: dropDown 
    }); 

    $("#dropDown").change(function() { 
     $("#dropdownID").val(dropDownID[$("#dropDown option:selected").index()]); 
    }); 
}); 

+0

Où est votre script python ou votre code values.py? Veuillez poster plus d'informations afin que nous puissions vous aider – jsanchezs

+0

@jsanchezs le code python que j'ai mis dans mon répertoire de projet puis dans un dossier appelé "templatetags" à l'intérieur values.py et init .py – VisualExstasy

+0

Oui, les balises sont en effet le moyen d'y parvenir mais postez votre code python dans la question afin que nous puissions comprendre comment cela fonctionne et comprendre exactement ce dont vous avez besoin pour vous guider – jsanchezs

Répondre

3

Comme nous avons parlé, balises sont la façon d'y parvenir .... Disons que vous voulez faire un simple tag « Bonjour tout le monde », ce serait votre code tag.py:

tag.py

from django import template 

register = template.Library() 

@register.assignment_tag 
def hello_world(name): 
    salute = 'Hello' + name 

    return salute 

Comme vous voyez, vous avez tout le code python, en fonction de ce dont vous avez besoin pour importer des modèles ou n'importe quoi d'autre de la base de données ... en supposant que vous avez tout dans l'ordre, vous créez simplement la fonction, traiter tout le code dont vous avez besoin et retourner quelque chose (dictionnaire de données dans votre cas pour itérer dans le modèle), mais pour cet exemple simple juste une chaîne avec le nom.

Ensuite, à l'intérieur de votre modèle vous chargez votre fichier de balises, et appelez la fonction d'envoyer le paramètre spécifique pour l'utiliser plus tard comme je vous montre ici:

Template.html

{% load tag %} 
<div id="id_div"> 
    {% hello_world 'Foo' as salute_text %} 
    <strong> {{ salute_text }} </strong> 
</div> 

Espoir ça aide à clarifier !!

+0

Je reçois un tag.py n'est pas une erreur de bibliothèque de balises enregistrée. – VisualExstasy

+0

Avez-vous essayé mon code à partir de zéro ou utilisez-vous votre fichier appelé values.py?, Rappelez-vous que dans cet exemple tag.py devrait être le nom du fichier et qu'il devrait être dans le répertoire templatetags. – jsanchezs

+0

Oui, j'ai utilisé vôtre tag.py dans le répertoire templatetags puis dans l'appel son {% load tag.py%} – VisualExstasy