2013-09-29 4 views
1

J'ai été confronté à un problème après avoir tenté d'implémenter Dajax dans mon projet Django.Django, Dajax et Javascript - onclick n'appelle pas la méthode python

À un certain moment au cours des instructions d'installation et d'utilisation du site Dajax, on m'a demandé d'appeler une méthode dans ajax.py en tant que tel:

<button type="button" onclick="Dajaxice.MyProject.MyApp.say_hello(Dajax_process)">Dajax</button> 

Mais lorsque je tente de cliquer sur ledit bouton, il est pas de réponse du tout. Il agit comme un bouton nul. J'essaie toujours de comprendre comment Dajax reconnaît même ma fonction say_hello comme ça ... mais c'est probablement comme ça que Dajax est utilisé.

J'ai ma méthode de say_hello mis en œuvre comme suit:

from dajaxice.decorators import dajaxice_register 
from dajax.core import Dajax 

@dajaxice_register 
def say_hello(req): 
    print "DAJAX" 
    dajax = Dajax() 
    dajax.alert("Hello World!") 
    return dajax.json() 

À première vue, je croyais qu'il était problème de ne pas trouver la méthode du tout. Je ne suis toujours pas sûr à 100% si c'est la raison. Mais ça pourrait être.

Est-ce que quelqu'un a des suggestions sur ce que je devrais rechercher?

J'ai toutes les instructions sur la page: http://django-dajax.readthedocs.org/en/latest/installation.html#installing-dajax

Merci, David

Répondre

1

cet obstacle Actuellement bondis moi-même.

choses Couple pour vous assurer de:

  1. Téléchargez et installez jquery, et le mettre quelque part, vous pouvez l'appeler. Je l'ai mis dans un dossier statique dans mon application: /my_site/example_app/static/js/jquery-2.0.3.js
  2. Vous devrez charger que dans votre Tête HTML en utilisant:

    <script type="text/javascript" src="{{ STATIC_URL }}js/jquery-2.0.3.js"></script>

  3. Vous devrez également vous assurer d'appeler le noyau jquery dajax utilisant:

    <script type="text/javascript" src="{{ STATIC_URL }}dajax/jquery.dajax.core.js"></script>

  4. Ensuite, avant exécuter votre serveur pour tester exécuter

    manage.py collectstatic

  5. Cela copiera tout django besoins de Dajax/Dajaxice. J'ai installé les deux dans ma librairie Python2.7 normale, django les tire de là et les copie dans le dossier nécessaire.

Cela devrait vous aider ... Je ne suis pas expert ici, mais ces étapes ont aidé à remédier à mon problème.

De plus, si votre code de copie sur le site Web de Dajax, ne pas oublier de changer la racine de l'application dans le onclick appelle ....

<input type="button" value="callback!" onclick="Dajaxice.*EXAMPLE-APP-NAME*.saybye(my_js_callback);"> 

Vous devrez changer que de ce qui précède à « sondages » ou "exemple" ... quel que soit le nom de l'application qui exécute ce code.