1

我正在尝试创建一个基本的提交表单(如 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 文件中,有 subscribe 方法:

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 文件中,并且回调也是正确的。我真的不知道如何调试这个了,django 日志对此一无所知。在此先感谢大家,我真的为此失去了头发。

4

1 回答 1

0

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

Anyway... are your views.py, ajax.py, etc... inside any app? or all of them are in the root project folder. That could be the problem too.

于 2012-01-02T16:45:27.533 回答