Ошибка сети Dajaxice 404: метод не найден - PullRequest
1 голос
/ 02 января 2012

Я пытаюсь создать базовую форму отправки (как пример dajaxice), но получаю сообщение об ошибке 404 из консоли firebug:

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

Структура папок моего проекта

/maynard/maynard_core/

В этой папке содержатся основные файлы проекта (views.py, ajax.py и т. Д. И т. Д. Основная папка проекта django). Внутри файла ajax.py есть метод подписки:

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)

Который затем вызывается с помощью этого метода js

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

Форма является базовой формой с действием "#" и onclick = "send_form_top ();"

Я следовал за установкой и настройкойруководство (настройки настроены, URL-адреса настроены и т. д. и т. д.), и это очень 101 реализация.

в 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')),

Я добавил 'dajaxice' в мои установленные приложения в settings.py, и DAJAXICE_MEDIA_PREFIX - это 'dajaxice' (как в документации).Шаблоны тоже подойдут (так как у меня есть динамически скомпилированный js-файл dajaxice)

Но все же я не могу заставить его работать.Я проверил заголовки ответа, и вот что я получаю для файла dajax.js:

maynard_core: {


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

Это говорит мне о том, что метод submit, который находится в файле ajax.py внутри maynard / maynard_core /на самом деле включен и обратный вызов тоже правильный.Я действительно не знаю, как отладить это больше, логи django ничего не показывают об этом.Спасибо всем заранее, я действительно теряю свои волосы на этом.

1 Ответ

0 голосов
/ 02 января 2012

Если вы получили ошибку 404, определенно проблема в вашей конфигурации urls.py. Есть ли какой-нибудь подстановочный URL-адрес над "Даяксичем"? Попытайтесь поместить в начало URL-адрес dajaxice и посмотрите, что произойдет.

В любом случае ... есть ли ваши views.py, ajax.py и т. Д ... внутри какого-либо приложения? или все они находятся в корневой папке проекта. Это тоже может быть проблемой.

...