Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery Ajax POST to views.py函数_Jquery_Python_Ajax_Django - Fatal编程技术网

Jquery Ajax POST to views.py函数

Jquery Ajax POST to views.py函数,jquery,python,ajax,django,Jquery,Python,Ajax,Django,我花了上午的大部分时间阅读了一些教程,并在这里阅读了相关的问题,但我似乎仍然不能正确理解这些问题。我已经创建了一个简化版本,来了解ajax的工作原理。在坚果壳中:我想将两个数字传递给views.py中的一个函数。这个简单的函数将这两个数字相乘,然后将它们发回。以下是我迄今为止所做的工作: html: 乘法是在app prof_页面的views.py中定义的函数 views.py def product(a1,a2): return float(a1 * a2) def multiply

我花了上午的大部分时间阅读了一些教程,并在这里阅读了相关的问题,但我似乎仍然不能正确理解这些问题。我已经创建了一个简化版本,来了解ajax的工作原理。在坚果壳中:我想将两个数字传递给views.py中的一个函数。这个简单的函数将这两个数字相乘,然后将它们发回。以下是我迄今为止所做的工作:

html:

乘法是在app prof_页面的views.py中定义的函数

views.py

def product(a1,a2):
    return float(a1 * a2)

def multiply(request):
    if request.is_ajax():
        try:
            b1 = request.POST['aNumber']
            b2 = request.POST['bNumber']
        except KeyError:
            return HttpResponse('Error') # Incorrect Post

        result_mult = product(b1,b2)
        return HttpResponse(result_mult)
    else:
        raise Http404
当我点击按钮时,会显示错误消息,我的控制台上的POST方法有500个错误。当然,网络监视器也会显示500错误

我不完全确定我的url设置是否正确;如果不是这样的话,我不知道还能去哪里找


非常感谢。

a您的视图中未定义编号
b编号
。你的意思是:

        b1 = request.POST['aNumber']
        b2 = request.POST['bNumber']

在对回溯进行了进一步的检查之后,我注意到产生500错误的问题是乘法函数没有执行。这是因为数据被作为str类型拉入,我认为这是默认值。通过向request.POST调用添加正确的数据类型float,问题得到了解决。因此,my views.py现在看起来如下所示:

def multiply(request):
    if request.is_ajax():
        try:
            b1 = float(request.POST['aNumber'])
            b2 = float(request.POST['bNumber'])
        except KeyError:
            return HttpResponse('Error') # Incorrect Post

        result_mult = b1 * b2
        return HttpResponse(result_mult)
    else:
        raise Http404
url(r'^profile/multiply$', 'prof_pages.views.multiply'),
我对代码的另一个更改是在URL.py中,我注意到完整的请求URL如下所示:

http://127.0.0.1:8000/profile/multiply
因此,我的urls.py现在看起来如下所示:

def multiply(request):
    if request.is_ajax():
        try:
            b1 = float(request.POST['aNumber'])
            b2 = float(request.POST['bNumber'])
        except KeyError:
            return HttpResponse('Error') # Incorrect Post

        result_mult = b1 * b2
        return HttpResponse(result_mult)
    else:
        raise Http404
url(r'^profile/multiply$', 'prof_pages.views.multiply'),
感谢所有回应的人


如果您正在使用firefox,请尝试在新选项卡中打开响应。然后您将获得django错误页面。发布错误消息。500错误是服务器站点错误,如果您处于开发模式,您应该在控制台上看到回溯,如果您部署了环境,则应该在错误日志(可能是WSGI实现之一)中看到回溯。另外,您正在发布到
/multiply
,并且在
urls.py
中有一个尾随斜杠
r'^multiply/$”
。克劳斯,我已经删除了urls.py中的尾随斜杠,但仍然得到相同的错误。回溯中的整行代码如下:[31/Oct/2015 18:54:50]“POST/multiply HTTP/1.1”500 9939。