12
votes

Passez des informations de JavaScript à Django App et Retour

Alors, j'essaie de configurer essentiellement une page Web où un utilisateur choisit un identifiant, la page Web envoie ensuite les informations d'identification à Python, où Python utilise l'ID pour interroger une base de données, puis renvoie le résultat à la page Web pour Affichage.

Je ne suis pas tout à fait sûr comment faire cela. Je sais comment utiliser un appel Ajax pour appeler les données générées par Python, mais je ne suis pas sûr de la manière de communiquer les informations d'identification initiales à l'application Django. Est-il possible de dire, interrogez une URL comme ./app/id (IE / App / 8), puis utilisez les informations URL pour donner à Python les informations? Comment irait-il d'essayer d'éditer des URLs.py et des vues.py pour faire cela?

merci,


2 commentaires

Ceci n'est que le code Standard Django URL / View. Les demandes AJAX ne sont pas différentes des demandes normales dans ce contexte.


Malgré (et précisément à cause de cela) étant une question fondamentale sur Ajax et Django, j'ai trouvé cette question très utile. Ce type de questions «comment démarrer» est difficile à trouver (même dans des tutoriels de base de lecture et de lecture) dans Stackoverflow et économisez beaucoup d'efforts pour les débutants. Merci xhassassin!


3 Réponses :


1
votes

Oui, c'est possible. Si vous passez l'identifiant comme un paramètre à la vue, vous utiliserez à l'intérieur de votre application, comme: def Exemple_view (demande, ID) et dans Urls.py, vous pouvez utiliser quelque chose comme ceci: URL (R '^ EXEMPLE_VIEW / (? P \ D +) /', 'APP.Vues.Example_View') .

L'ID dans l'URL / exemple_view_template / 8 aura accès au résultat à l'aide de l'ID qui est lié au numéro 8. Comme le 8e enregistrement d'une table spécifique de votre base de données, par exemple .


1 commentaires

Haha merci. Ouais, la chose la? P est tout ce dont j'avais besoin, je l'ai trouvé sur le tutoriel de Django comme quelques minutes après avoir demandé ici.



0
votes

Comment capturer les informations de la demande d'Ajax / URL, vous pouvez généralement le faire comme dans une demande de Django normale, vérifiez Documents de distribution d'URL et lisez à propos des vues de Django à partir de documents officiels.

À propos de la réponse à la réponse, capturez simplement les paramètres, processus de traitement de votre demande, donnez à votre réponse avec MIMITYPE approprié.

Parfois, vous devez Serialize ou convertir vos données à un autre format comme JSON qui peut être traité plus efficacement dans un côté client / JS


0 commentaires

28
votes

Vous parlez d'Ajax. AJAX nécessite toujours 3 pièces (techniquement, seulement deux: JavaScript double double-service).

  1. Client (JavaScript dans ce cas) fait la demande li>
  2. Server (vue Django dans ce cas) gère la demande et renvoie la réponse LI>
  3. client (à nouveau, JavaScript) reçoit une réponse et fait quelque chose avec elle li> ol>

    Vous n'avez pas spécifié de cadre préféré, mais vous seriez fou de faire AJAX sans un cadre javascript de quelque sorte, je vais donc choisir JQuery pour vous. Le code peut assez facilement être adapté à n'importe quel framework JavaScript: p> xxx pré>

    J'utilise $. Getjson code>, qui est une méthode de commodité jQuery qui envoie Une demande d'accès à une URL et analyse automatiquement la réponse en tant que JSON, transformez-la en un objet JavaScript transmis comme DATA CODE> ici. Le premier paramètre est l'URL La demande sera envoyée à (plus sur celle-ci dans un bit), le deuxième paramètre est un objet JavaScript contenant des données qui doivent être envoyées avec la demande (elle peut être omise si vous n'avez pas besoin de Envoyez des données) et le troisième paramètre est une fonction de rappel pour gérer la réponse du serveur sur le succès. Donc, ce type de code simple couvre les parties 1 et 3 énumérées ci-dessus. P>

    La partie suivante est votre gestionnaire, ce qui sera bien sûr dans ce cas être une vue Django. La seule exigence de la vue est qu'il doit renvoyer une réponse JSON: p> xxx pré>

    Notez que cette vue ne prend pas d'argument autre que la requête requise code>. Ceci est un peu de choix philosophique. IMHO, en mode de repos véridique, les données doivent être transmises avec la demande, non dans l'URL, mais d'autres peuvent et ne sont pas d'accord. Le choix ultime est à vous de choisir. P>

    Aussi, notez que j'ai utilisé ici la bibliothèque SimpleJson de Django, qui est optimale pour les structures de données Python communes (listes, dicts, etc.). Si vous souhaitez renvoyer une instance de modèle Django ou un requérant, vous devez utiliser la bibliothèque de sériarialiseurs. P>

    data[i].some_key
    


2 commentaires

Bonne réponse! Mais surveille, django.utils.simplejson est obsolète à Django 1.5+ comme indiqué dans Notes de publication Django 1.5


docs.djangoproject.com /en/1.10/Relases/1.5/...