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.
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 :) –