Il y a beaucoup de postes et de pages discutant de l'utilisation de Django et d'Ajax, et j'ai lu des centaines au cours de la dernière journée environ à la recherche de la réponse à cette question. Aperçu rapide:
Mai des exemples montrez une URL codée dur comme ceci: p> ou certains utilisent l'étiquette de modèle d'URL, mais sans paramètres: P> var id_number = $('#id_endowmententity_set-' + rownum + '-id_number').val()
$.ajax({
type: "GET",
url: '{% url entity_name id_number %}',
4 Réponses :
Django est une application côté serveur. JavaScript est le côté client. Les modèles Django sont rendus sur le serveur, donc Puisque vous faites un appel AJAX, et que l'appel AJAX dépend d'une entrée de l'utilisateur, généralement le meilleur itinéraire du client pour envoyer tout type d'entrée utilisateur à Le serveur est en utilisant QueryString (chose après et la vue (désolé je ne suis pas familier avec des vues basées sur la classe): p> qui me semble être la solution la plus élégante. Si toutefois, vous devez absolument construire l'URL du côté du client, vous pouvez générer une URL de modèle du côté serveur, puis remplacer les pièces dont vous avez besoin sur le côté du client pour obtenir l'URL complète. Cela nécessite toutefois plus de maintenance et est donc plus sujet aux erreurs. Simple JS Exemple de cette approche: p> {% URL entity_name id_number%} code> est évalué sur le côté serveur, puis la valeur est renvoyée au client. Juste à cause de cela, il vous est impossible de combiner les modèles Django avec JavaScript. Cependant, il y a quelques points de choses que vous pouvez faire pour résoudre votre problème.
? code> dans l'URL) ou en envoyant un
post code>. Donc, la chose la plus simple est de modifier votre URL pour ne pas inclure le
pk code> dans l'URL, mais pour la vue pour obtenir cela dans le cadre de
obtenir code> ou
poste < / code> données. p>
J'ai essayé d'utiliser un rappel Ajax avec une URL nommée de mon Vue de la fonction B> comme err_key = "{% URL 'pcd_list"%} " code> et utilisez-le pour créer un lien sur l'appelant page en utilisant
$ ('# ajxerr'). HTML (var_err + ' chèque '); code> où b>
var_err_url code> est une variable pour la valeur
err_key code> revenue de l'appel d'Ajax. Mais il échoue. b> Cependant, si j'utilise
err_key = "path_génerated_from_named_url" code> dans ma vue de fonction, cela fonctionne. Existe-t-il un moyen d'utiliser l'URL nommée comme j'ai essayé dans le premier exemple ci-dessus b>?
Il est possible de définir une URL AJAX sur l'élément que vous sélectionnez à l'aide d'un attribut et cela se comportera comme Django URL. Surtout, vous pouvez même accéder à l'URL dans le fichier JavaScript. Je l'utilise beaucoup HTML
path('api/chart/data', views.ChartData.as_view(), name="chart-data"),
Je pense que c'est la meilleure réponse qu'aujourd'hui pour beaucoup d'utilisations. Par exemple, j'ai
Il suffit de faire un voyage aller-retour à un serveur pour aller chercher une URL. La meilleure stratégie pour garder les URL sèches et éviter que cela consiste à générer JavaScript qui émule la fonction URL Native URL Django-rendrier-statique fait exactement cela. P> Inverse CODE> de DJANGO, puis servez ce code statiquement avec le reste de votre côté client JS. P>
Cela a fonctionné pour moi. Mon URL était:
My View.py Fichier: < / p> dans mon modèle, j'ai résolu le problème de: p> chemin ('MyURL /