【发布时间】:2012-01-31 18:05:12
【问题描述】:
我正在尝试创建一个基本的提交表单(如 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日志什么也没显示。提前谢谢大家,我真的在这件事上失去了我的头发。
【问题讨论】:
-
小注释:在 subscribe 方法中有 dajaxice 装饰器和 function_register。那只是因为我都尝试了它们并且使用@dajaxice_register 或 dajaxice_functions.register(subscribe) 没有区别。代码不乱:)
标签: django forms http-status-code-404 dajaxice