Ich arbeite an einem Django-Projekt. Ich würde gerne eine Daten aus Django's views.py in eine Javascript-Datei übergeben, die js-Funktion ausführen und dann den Rückgabewert in meine HTML-Seite rendern. Ich verwende kein Formular in diesem Projekt. Kann mir bitte jemand sagen, wie ich das angehen soll? Die meisten Antworten, die ich hier sehe, sind derzeit veraltet und ich habe verschiedene Ansätze ohne Glück versucht. Ich benutze Python v2.7. Vielen Dank im Voraus!Wie übergebe ich Django-Daten an eine externe JS-Datei?
Antwort
Wenn Ihr Projekt Jinja oder eine andere Templating-Engine verwendet, können Sie versuchen, die Daten in die Vorlage zu übertragen.
Gefunden Sie dieses Bit auf Writing your first Django app, part 3 und zwickte es ein wenig.
def index(request):
template = loader.get_template('app/index.html')
my_data = ['whatever your data is']
context = {
'my_data': my_data,
}
return HttpResponse(template.render(context, request))
Und in index.html
<html>
<head>
// import jQuery
</head>
<body>
<div id='my_data_label'></div>
<script type="text/javascript">
var my_data = "{{ my_data }}"; // gets set by jinja
$('.my_data_label').text(my_data);
// do whatever with the data
</script>
</body>
</html>
nicht sicher, ob dies ist genau das, was Sie suchen, aber hoffen, es hilft.
Es könnte eine gute Idee sein, die Javascript-Daten innerhalb eines <script>
Tags auf der Vorlage für die Seite direkt zu rendern. Wenn es auf mehreren Seiten verwendet werden soll, stellen Sie sicher, dass es in der Basisvorlage enthalten ist oder importieren Sie es mit einem Include.
Ihre Ansicht, die einen Standard-django Ansicht ähneln könnten:
def detail(request, poll_id):
try:
p = Poll.objects.get(pk=poll_id)
except Poll.DoesNotExist:
raise Http404("Poll does not exist")
return render(request, 'polls/detail.html', {'poll': p})
Die Vorlage würde einige zusätzliche Logik haben die Javascript-Objekt zu bauen:
<script>
var questionset = {
{% for q in poll.question_set %}
q.id : {
"title": "{{ q.title }}",
"score": {{ q.score }}
}
{% if not loop.last %},{% endif %}
{% endfor %}
}
</script>
Sie jetzt ein Javascript-Objekt zur Verfügung haben in die Vorlage, die dynamisch aus den Daten aufgebaut wird. Sie können es als Sie bitte:
<script>
function doSomething(questionset){
...
}
</script>
Es gibt Möglichkeiten, um Ihre Daten in eine JavaScript-Datei, aber bedenken Sie zu speichern, dass dies durch den Browser des Clients zwischengespeichert bekommen. Keine gute Idee, dynamische Daten zu haben.
Meine Django-Fähigkeiten sind ein wenig eingerostet, also bitte überprüfe meinen Code vor der Verwendung. Alle Korrekturen werden geschätzt. –
Hallo Roy! Vielen Dank für Ihren Kommentar. Ich werde auf diesen Code herumspielen und Sie aktualisieren, wenn es irgendetwas gibt :) – Marvin
Roy, vermeide ich, ein Wie kann ich die Variable "a" an eine externe .js-Datei übergeben? – Marvin
- 1. Wie übergebe ich eine Zeichenkette an setContentView()?
- 2. Wie übergebe ich $ (this) an eine Funktion?
- 3. Wie übergebe ich Objekte an eine TemplateView?
- 4. Wie übergebe ich eine Funktion an Enum.each?
- 5. C# BotFramework FormFlow, übergebe Werte an eine externe API
- 6. Wie übergebe ich die Methode eines Objekts an eine externe Funktion?
- 7. Wie übergebe ich Daten vom Vue js-Methodenbereich an eine externe JS-Datei?
- 8. Wie übergebe ich eine retrieve Datenbankdaten an eine andere Seite?
- 9. PHP - Wie übergebe ich eine globale Variable an eine Funktion
- 10. Wie übergebe ich eine Zeichenfolge an eine andere Funktion
- 11. Wie übergebe ich eine Datenbankvariable an eine Controller-Funktion
- 12. Wie übergebe ich eine Nummer an eine Gestenerkennung?
- 13. Wie übergebe ich eine Zeichenfolge an eine Objektklasse in Python?
- 14. Wie übergebe ich eine Datei an eine Funktion in Python
- 15. Wie übergebe ich Objektdaten an ein window.open()
- 16. Wie übergebe ich Parameter an XSLT?
- 17. Wie übergebe ich den Textboxwert an JavaScript?
- 18. Wie übergebe ich Parameter an die Teilmenge()?
- 19. Wie übergebe ich Argumente an meinen Handler
- 20. Wie übergebe ich Argumente an Shell-Skript?
- 21. Filebeat: Wie übergebe ich Dateieigenschaften an Logstash?
- 22. Wie übergebe ich Scope an AngularStrap $ Alert?
- 23. Wie übergebe ich Kommandozeilenargumente an atom-runner
- 24. Wie übergebe ich Kommandozeilenargumente an ipython
- 25. Wie übergebe ich Schlüsselwortargumente an reactor.callLater
- 26. Wie übergebe ich Daten an einen Exceptionhandler?
- 27. Wie übergebe ich Variablenwerte an andere Konfigurationsparameter?
- 28. Wie übergebe ich Daten an SectionList?
- 29. Wie übergebe ich die Schlüsselwortliste an pathos.multiprocessing?
- 30. Wie übergebe ich Parameter von Mouse-Event an eine Funktion?
OMG danke! Ich habe vergessen "my_data" an einen Kontext zu übergeben. Kennst du eine Art, wie ich "my_data" in eine .js Datei überführen kann? Wenn ich diesen Weg gehen würde, wäre es dann ein Problem, wenn ich mehr als eine Variable passiere? Danke noch einmal! :) – Marvin
Siehe meinen Kommentar oben für die Verwendung einer Variablen mit einer externen Javascript-Datei (Spoiler: es ist einfach). Es gibt sicherlich keine Begrenzung für die Anzahl der Objekte, die Sie verwenden. –