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