【问题标题】:Dajaxice network error 404: method not foundDajaxice 网络错误 404:找不到方法
【发布时间】: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


【解决方案1】:

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

无论如何...您的views.py、ajax.py等...在任何应用程序中吗?或者它们都在根项目文件夹中。这也可能是问题所在。

【讨论】:

  • views.py 和 ajax.py 在 maynard_core 应用程序中,urls.py 在根文件夹中。明天我会尝试将 dajaxice url conf 放在开头。我们有一个 nginx 服务静态,这可能是问题吗?我必须告诉 nginx /dajaxice/ 是一个有效的网址吗?要不然是啥?谢谢
  • 我照你说的做了(pastie.org/3117670 同时项目也更名了),没有任何改变。另外,我有一个新的奇怪行为:我将 subscribe 函数名称更改为“subscribe_test”(我对名称冲突或类似问题提出了质疑,因为“subscribe”是一个通用名称)并且显然该方法没有被注册......我我现在真的很困惑
  • 由于我们的 nginx proxypass 配置,我不得不放弃 dajaxice,这真的很遗憾,因为我在之前的项目中喜欢它。无论如何,谢谢豪尔赫
猜你喜欢
  • 2012-06-18
  • 1970-01-01
  • 1970-01-01
  • 2021-04-25
  • 2020-06-05
  • 2019-01-01
  • 2016-12-18
  • 2013-01-24
  • 1970-01-01
相关资源
最近更新 更多