2012-01-02 5 views
1

Je suis en train de créer une forme soumettre de base (comme l'exemple du dajaxice), mais je continue à recevoir une erreur 404 de la console Firebug:erreur réseau Dajaxice 404: méthode introuvable

404 NOT FOUND 386ms 
"NetworkError: 404 NOT FOUND - http://<my_website>/dajaxice/maynard.maynard_core.subscribe/" 

Ma structure de dossier du projet est

/maynard/maynard_core/ 

Ce dossier contient les fichiers principaux du projet (views.py, ajax.py etc etc ... dossier principal du projet django) a l'intérieur du fichier ajax.py, il y a la méthode s'abonner:

from dajax.core import Dajax 
from dajaxice.core import dajaxice_functions 
from dajaxice.decorators import dajaxice_register 
from views import subscribe_search 
from forms import SubscriptionForm, SendMailForm 
from django.core.mail import send_mail 


def subscribe(request, form): 

    if request.POST: 
     dajax = Dajax() 

     form = SubscriptionForm(form) 

     try: 
      if form.is_valid(): 
       url = form.cleaned_data['url_sub'] 
       what = form.cleaned_data['what_sub'] 
       where = form.cleaned_data['where_sub'] 
       mail = form.cleaned_data['email'] 

       subscribe_search(url,what,where,mail) 
       dajax.assign('#sub_mess_top','innerHTML','Thank you for subscribing to the search') 

      else: 
       dajax.add_css_class('#sub_mess_top','text error-message') 
       dajax.assign('#sub_mess_top','innerHTML','Couldn\'t complete the request, try again!') 

      return dajax.json() 

     except: 
      dajax.add_css_class('#sub_mess_top','text warning-message') 
      dajax.assign('#sub_mess_top','innerHTML','You already saved this search') 
      return dajax.json() 
dajaxice_functions.register(subscribe) 

Ce qui est alors appelé par cette méthode js

function send_form_top(){ 
    data = $('#subscribe').serializeObject(true); 
    Dajaxice.maynard.maynard_core.subscribe(Dajax.process,{'form':data}); 
} 

La forme est une forme de base à l'action "#" et onclick = "send_form_top();"

J'ai suivi le guide d'installation et de configuration (paramètres configurés, urls configurés etc etc), et c'est une implémentation très simple.

dans urls.py

from dajaxice.core import dajaxice_autodiscover 
dajaxice_autodiscover() 
... 
django.conf.urls.defaults.url(r'^%s/' % settings.DAJAXICE_MEDIA_PREFIX, django.conf.urls.defaults.include('dajaxice.urls')), 

J'ai ajouté 'dajaxice' à mes applications installées dans settings.py et DAJAXICE_MEDIA_PREFIX est 'dajaxice' (comme dans les docs). Les modèles sont très bien aussi (puisque j'ai le dajaxice dynamiquement compilé js inclus)

Mais encore je ne peux pas sembler être capable de le faire fonctionner. J'ai vérifié THROU les en-têtes de réponse, et voici ce que je reçois pour le fichier dajax.js:

maynard_core: { 


    subscribe: function(callback_function, argv, custom_settings){ 
     Dajaxice.call('maynard.maynard_core.subscribe', callback_function, argv, custom_settings); 
    }, 
... 

Cela me dit que la méthode soumettre, ce qui est dans le fichier ajax.py intérieur maynard/maynard_core/est en fait inclus et le rappel est correct aussi. Je ne sais vraiment plus comment le déboguer, les logs de django ne montrent rien à ce sujet. Merci d'avance, je perds vraiment mes cheveux à ce sujet.

+1

petit commentaire: dans la méthode subscribe, il y a dajaxice decorators et function_register. C'est juste parce que je les ai essayé tous les deux et il n'y a aucune différence en utilisant @dajaxice_register ou dajaxice_functions.register (subscribe). le code n'est pas en désordre :) –

Répondre

0

Si vous avez une erreur 404, le problème est définitivement dans votre configuration urls.py. Il y a-t-il une url générique au-dessus du dajaxice? Essayez de mettre le config url dajaxice sur le début et voir ce qui se passe.

De toute façon ... sont vos views.py, ajax.py, etc ... dans n'importe quelle application? ou tous sont dans le dossier du projet racine. Cela pourrait être le problème aussi.

+0

views.py et ajax.py sont à l'intérieur de l'application maynard_core, urls.py se trouve dans le dossier racine. Demain, je vais essayer de mettre le config url dajaxice au début. nous avons une statique de service nginx, cela peut-il être le problème? dois-je dire à nginx que/dajaxice/ est une URL valide? ou quoi? merci –

+0

je l'ai fait comme vous me l'avez dit (http://pastie.org/3117670 et pendant ce temps le projet a changé de nom aussi) et rien ne change. aussi, j'ai un nouveau comportement étrange: j'ai changé le nom de la fonction subscribe en "subscribe_test" (je pensais à des conflits de noms ou similaires, puisque "subscribe" est un nom commun) et apparemment la méthode n'est pas enregistrée ... suis vraiment confus maintenant –

+0

J'ai dû abandonner dajaxice à cause de notre configuration de nginx proxypass et c'est vraiment dommage car je l'ai aimé dans le projet précédent. merci quand même jorge –

Questions connexes