Javascript-提取POST正在终止-WinError 10053

问题描述

  • 我需要为我的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()方法。

来源:Django documentation