Ich möchte Daten an meine Django-Ansicht senden und gleichzeitig die Seite umleiten. Also, ich denke, Ajax ist aus dem Fenster. Ich bin nicht sicher, wie man das über Jquery macht.Senden Sie Javascript-Daten an Django Ansichten
0
A
Antwort
3
Sie brauchen jQuery dafür nicht. Create a form that performs a POST to the appropriate URL und reichen Sie es ein.
0
Hier ist mein Code zum Senden von Daten per POST an einen Django-Server. Ich besuchte die Seite, die Ignacio vorgeschlagen hatte, und fügte auch csrf hinzu, so dass es mit typischen Djano-Ansichten funktioniert.
// get cookie using jQuery
function getCookie(name) {
var cookieValue = null;
if (document.cookie && document.cookie != '') {
var cookies = document.cookie.split(';');
for (var i = 0; i < cookies.length; i++) {
var cookie = jQuery.trim(cookies[i]);
// Does this cookie string begin with the name we want?
if (cookie.substring(0, name.length + 1) == (name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
}
function post_to_url(path, params, method) {
method = method || "post"; // Set method to post by default if not specified.
// The rest of this code assumes you are not using a library.
// It can be made less wordy if you use one.
var form = document.createElement("form");
form.setAttribute("method", method);
form.setAttribute("action", path);
for(var key in params) {
if(params.hasOwnProperty(key)) {
var hiddenField = document.createElement("input");
hiddenField.setAttribute("type", "hidden");
hiddenField.setAttribute("name", key);
hiddenField.setAttribute("value", params[key]);
form.appendChild(hiddenField);
}
}
csrfField = document.createElement("input");
var csrftoken = getCookie('csrftoken')
console.log("token" + csrftoken)
csrfField.setAttribute("type", "hidden");
csrfField.setAttribute("name", "csrfmiddlewaretoken");
csrfField.setAttribute("value", csrftoken)
form.appendChild(csrfField)
document.body.appendChild(form);
form.submit();
}
Verwandte Themen
- 1. Senden von Daten von Django-Ansichten an angularjs Controller
- 2. Daten an ein Django-Admin-Formular senden
- 3. Daten von django an html senden
- 4. Django-Ansichten Benutzerdefinierter Filter
- 5. Halten Django Ansichten DRY
- 6. Django App-Ansichten trennen
- 7. Senden von Daten von angularjs an django
- 8. Django und generische Ansichten
- 9. Senden Sie Formulardaten an Javascript beim Senden
- 10. Senden Sie eine Beitragsanfrage an den Server
- 11. Pre-Cache-Django-REST-Ansichten
- 12. Debugging langsam Django Admin Ansichten
- 13. Wie Ansichten in django zwischenzuspeichern
- 14. So senden Sie eine Nachricht an eine Ansicht von vielen
- 15. Django: Logging oder Fehler per Mail senden
- 16. Senden von Nachrichten an den Benutzer über django Signale
- 17. Klasseninstanz an alle Ansichten übergeben
- 18. So fügen Sie Ansichten programmgesteuert Ansichten hinzu
- 19. Mocking-Funktionen in Django klassenbasierten Ansichten
- 20. Angeben unterschiedlicher Vorlagennamen in generischen Django-Ansichten
- 21. Senden Sie Daten an php (form method = post) und dann senden Sie es zurück an Javascript
- 22. Senden php Senden an MySQL
- 23. Wie können Sie Variablen zwischen Django-Ansichten weitergeben oder teilen?
- 24. Django Klasse basierte Ansichten - Filter queryset und speichern Sie es
- 25. Senden von JSON-Daten an den Client django
- 26. Senden Sie PHP-Zeichenfolge an Javascript auf Senden
- 27. Effizientes Importieren von Modulen in Django-Ansichten
- 28. SignalR: So senden Sie Daten an IConnected.Connect()
- 29. Senden Sie AJAX an Server vorunload
- 30. Senden Sie Google Analytics client_id an Piwik
Ok danke! Ich erhalte eine CSRF-Überprüfung fehlgeschlagen 403 Fehler. Ich habe bereits das JavaScript-Snippet hinzugefügt. [link] (https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajax) – Zach
Sie müssen das CSRF-Token entweder über '{% csrf_token%}' oder an das JavaScript übergeben Verwenden Sie einen der [CSRF Decorators] (https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#utilities), um die CSRF-Behandlung für die Ansicht zu ändern. –
Ok danke nochmal – Zach