我目前正在尝试在Django中创建view
,以便从JSON
接收和处理POST request
数据。我目前在尝试添加/更新数据库中的多个NotificationEmail
对象时遇到问题。
我想要做的是检查通过email
请求发送的数组内的电子邮件(POST
)是否已存储在NoticationEmail
对象中{{1该对象的元素。如果它已作为emailAddress
对象的emailAddress
存在,我想保留它。如果数组中的电子邮件未作为NotificationEmail
值存储在任何NotificationEmail
对象中,我希望使用此电子邮件添加新的emailAddress
对象作为NotificationEmail
值。最后,如果emailAddress
特定的NotificationEmail
(通过POST请求给出)id
值未在emailAddress
中列出,我想删除它
我目前只是收到了我创建的emails array
循环的错误消息,所以我无法运行服务器并试用它。我已经检查过没有for
循环,它确实收到了for
请求,并且能够在{{1}内将POST
个完整的电子邮件添加为array
值那个emailAddress
的对象。但这不是我希望在我的计划中拥有的行为。
NotificationEmail
的代码如下:
id
这是发送Django view
的{{1}}代码:
@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
});
}
到做我需要的。
如果有人能指导我实现目标,我将非常感激。 :(
提前致谢!