我目前正在Django中创建一个view
,以接收和处理来自POST request
的JSON
数据。我当前在数据库中添加/更新多个NotificationEmail
对象时遇到问题
我想做的是检查通过POST
请求发送的数组(email
)中的电子邮件是否已经作为该对象的emailAddress
元素存储在NoticationEmail
对象中。如果它已经作为NotificationEmail
对象的emailAddress
存在,我想保留它。如果数组中的电子邮件没有作为emailAddress
值存储在任何NotificationEmail
对象中,我想添加一个新的NotificationEmail
对象,将此电子邮件作为emailAddress
值。最后,如果有任何特定的id
(通过POST请求给出)的emailAddress
值没有列在emails array
中,我想删除它
我现在刚刚收到一条关于我创建的for
循环的错误消息,所以我无法运行服务器并进行尝试。我已经检查过,如果没有for
循环,它确实会接收POST
请求,并且能够将完整的array
电子邮件作为emailAddress
值添加到该NotificationEmail
对象中。但这不是我想在我的程序中的行为
我的Django view
代码如下:
@csrf_exempt
def editMachines(request):
if request.method == 'POST':
json_data = json.loads(request.body)
a = Machine.objects.filter(id = json_data['id']).update(name = json_data['machine_name'])
userid = a.user_id
b = NotificationEmail.objects.filter(machine_id = json_data['id'].values()
for i in range (len(json_data['email'])):
exists = false
count = 0
while exists == false or count < len(b):
if json_data['email'][i] == b[count]['emailAddress']:
exists = true
count++
else:
b[count].delete()
d = NotificationEmail(machine_id = json_data['id'], email = json_data['email'][i].values(), user = userid)
d.save()
count++
return HttpResponse(status = 200)
这是JavaScript
代码,它发送POST request
:
function updateMachine(){
var e = $('#emailAdd').val()
var emails = e.split(', ')
console.log(emails);
var data = {id : machineid, machine_name : $('#name').val(), email : emails};
console.log(data)
$.ajax({
type:'POST',
url:'/edit/machines/',
data: JSON.stringify(data),
dataType: 'json',
contentType: 'application/json',
statusCode : {
200 : function(){
alert("User updated.");
window.location = "/users/dashboard/";
}
},
async : false
});
}
我知道Javascript
中的Ajax
工作得很好,因为我可以对它做一些更改,但是我在尝试让Django view
做我需要的事情时遇到了很多麻烦
如果有人能指导我如何去做,我将不胜感激
提前谢谢
目前没有回答
相关问题 更多 >
编程相关推荐