我正在尝试创建一个基本的提交表单(比如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日志没有显示它。在此先感谢所有人,我真的失去了我的头发。
答案 0 :(得分:0)
如果您遇到404错误,肯定问题出在您的urls.py配置中。 dajaxice上面有任何通配符url吗?尝试将dajaxice url conf放在开头,看看会发生什么。
无论如何...是你的views.py,ajax.py等...在任何应用程序内?或者所有这些都在根项目文件夹中。这也可能是问题所在。