Dajaxice网络错误404:找不到方法

时间:2012-01-02 10:28:17

标签: django forms http-status-code-404 dajaxice

我正在尝试创建一个基本的提交表单(比如dajaxice的示例),但我一直从firebug控制台收到404错误:

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

我在settings.py中为已安装的应用添加了'dajaxice',而DAJAXICE_MEDIA_PREFIX是'dajaxice'(如文档中所示)。 模板也很好(因为我已经包含了dajaxice动态编译的js)

但我似乎无法使其发挥作用。我检查了响应头,这是我得到的dajax.js文件:

maynard_core: {


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

这告诉我实际包含了maynard / maynard_core /中的ajax.py文件中的submit方法,并且回调也是正确的。我真的不知道如何调试这个,django日志没有显示它。在此先感谢所有人,我真的失去了我的头发。

1 个答案:

答案 0 :(得分:0)

如果您遇到404错误,肯定问题出在您的urls.py配置中。 dajaxice上面有任何通配符url吗?尝试将dajaxice url conf放在开头,看看会发生什么。

无论如何...是你的views.py,ajax.py等...在任何应用程序内?或者所有这些都在根项目文件夹中。这也可能是问题所在。