我正在尝试创建一个基本的提交表单(如 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 日志对此一无所知。在此先感谢大家,我真的为此失去了头发。