问题描述
- 我需要为我的javascript项目课程发布一些信息。的 进入提取功能时中止操作。
- 我正在使用Chrome浏览器测试该项目。有时是“发送”,但现在根本不起作用。
- 要在Chrome中运行应用,我必须使用“ chrome.exe --user-data-dir =” D:\ CS50“ --disable-web-security”,否则它将无法正常工作。
- 在检查员的陪同下,我也看到了 单击“提交”按钮两次,有关如何解决此问题的任何提示? 请
有人可以帮我吗?
Exception happened during processing of request from ('127.0.0.1',51270)
Traceback (most recent call last):
File "C:\python38\lib\socketserver.py",line 650,in process_request_thread
self.finish_request(request,client_address)
File "C:\python38\lib\socketserver.py",line 360,in finish_request
self.RequestHandlerClass(request,client_address,self)
File "C:\python38\lib\socketserver.py",line 720,in __init__
self.handle()
File "C:\python38\lib\site-packages\django\core\servers\basehttp.py",line 174,in handle
self.handle_one_request()
File "C:\python38\lib\site-packages\django\core\servers\basehttp.py",line 182,in handle_one_request
self.raw_requestline = self.rfile.readline(65537)
File "C:\python38\lib\socket.py",line 669,in readinto
return self._sock.recv_into(b)
ConnectionAbortedError: [WinError 10053] Uma conexão estabelecida foi anulada pelo software no computador host
javascript
function send_email(recipients,subject,body){
console.log("Inside SendMail");
console.log( `${recipients}`,`${subject}`,`${body}`);
fetch('/emails',{
method: 'POST',headers: { 'Content-Type': 'application/json',},body: JSON.stringify({
recipients: recipients,subject: subject,body: body,})
})
.then(response => response.json())
.then(result => {
console.log('Success:',result);
alert("Message Sent!");
load_mailBox('sent');
})
.catch((error) => {
console.error('Error:',error);
});
}
HTML
{% extends "mail/layout.html" %}
{% load static %}
{% block body %}
<div id="compose-view">
<h3>New Email</h3>
<form id="compose-form">
{% csrf_token %}
<div class="form-group">
From: <input disabled class="form-control" id="compose-sender" value="{{ request.user.email }}">
</div>
<div class="form-group">
To: <input id="compose-recipients" class="form-control">
</div>
<div class="form-group">
Subject:<input class="form-control" id="compose-subject" placeholder="Subject">
</div>
Message:<textarea class="form-control" id="compose-body" placeholder="Body"></textarea>
<input id="submit" type="submit" value="Send E-mail" class="btn btn-primary"/>
</form>
</div>
{% endblock %}
{% block script %}
<script type="text/javascript" src="{% static 'mail/inBox.js' %}"></script>
{% endblock %}
Python
@csrf_exempt
@login_required
def compose(request):
# Composing a new email must be via POST
if request.method != "POST":
return JsonResponse({"error": "POST request required."},status=400)
# Check recipient emails
data = json.loads(request.body)
emails = [email.strip() for email in data.get("recipients").split(",")]
if emails == [""]:
return JsonResponse({
"error": "At least one recipient required."
},status=400)
# Convert email addresses to users
recipients = []
for email in emails:
try:
user = User.objects.get(email=email)
recipients.append(user)
except User.DoesNotExist:
return JsonResponse({
"error": f"User with email {email} does not exist."
},status=400)
# Get contents of email
subject = data.get("subject","")
body = data.get("body","")
# Create one email for each recipient,plus sender
users = set()
users.add(request.user)
users.update(recipients)
for user in users:
email = Email(
user=user,sender=request.user,subject=subject,body=body,read=user == request.user
)
email.save()
for recipient in recipients:
email.recipients.add(recipient)
email.save()
return JsonResponse({"message": "Email sent successfully."},status=201)
解决方法
我认为问题出在这里:
mail.models.User.MultipleObjectsReturned:get()返回多个用户-返回2个!
它期望一种资源,但是得到两种。我将看一下调用此方法的控制器。
更新
在Django中,get()方法需要一种资源,但是在这种情况下,提供了两种资源。根据有关查询的Django文档,如果您期望多个资源,则必须使用filter()方法。