Как разрешить ошибку недопустимого метода HTTP / 1.1 POST 405

#javascript #python #html #http-1.1

#javascript #python #HTML #http-1.1

Вопрос:

Я создаю веб-страницу и в настоящее время застрял на странице входа в раздел кода. Всякий раз, когда я пытаюсь войти в систему, я продолжаю получать это предупреждение об ошибке: «HTTP / 1.1 POST / check-login» — метод 405 не разрешен. Я несколько раз просмотрел свой код и сравнил его с видео-лекциями, которые я просматриваю, но, похоже, ничто из того, что я пробовал до сих пор, не позволяет мне преодолеть эту ошибку. Я довольно новичок в обучении кодированию, поэтому ответ может быть действительно простым, я просто не вижу его. Этот проект работает на нескольких языках программирования и находится на нескольких разных страницах. Большая часть кода написана на Python и HTML с одной страницей в Java script. Я думаю, что страница Java script может быть причиной задержки, поскольку именно там в основном настроен код проверки входа. Если кто-нибудь может помочь мне определить, в чем проблема, и как ее исправить, я был бы признателен за помощь. Это разделы кода, которые, как я полагаю, связаны с возникающей проблемой.

1.

   $(document).on("submit", "#login-form", function(e){
        e.preventDefault();

        var form = $(this).serialize();
        $.ajax({
            url: '/check-login',
            type: 'POST',
            data: form,
            success: function(res){
                if(res == "error"){
                    alert("Could not log in");
                }
                else{
                    console.log("Login as ", res);
                    window.location.href = "/";
                }
            }
        });
    });
  
 import pymongo
from pymongo import MongoClient
import bcrypt


class LoginModel:
    def __init__(self):
        self.client = MongoClient()
        self.db = self.client.codewizard
        self.Users = self.db.users

    def check_user(self, data):
        user = self.Users.find_one({"username": data.username})

        if user:
            if bcrypt.checkpw(data.password.encode(), user["password"]):
                return user
            else:
                return False
        else:
            return False
  
  1. контрольный список класса:
    определение Post (self):
    data = web.input()
    login = LoginModel.LoginModel()
    isCorrect = login.check_user(данные)

           if isCorrect:
              return isCorrect
          return "error"
      

Комментарии:

1. Вы не показываете нам свое определение маршрута в коде python. Не поддерживаемый метод означает, что ваш маршрут, вероятно, привязан к чему-то вроде GET вместо POST.

2. Это то, что вы имеете в виду: импорт веб-страниц из моделей импорт RegisterModel, LoginModel urls = (‘/’, ‘Home’, ‘/ Login’, ‘Login’, ‘/ register’, ‘Register’, ‘/ postregistration’, ‘PostRegistration’, ‘/check-login’, ‘Контрольный список )

Ответ №1:

Попробуйте добавить завершающую косую черту к URL-адресу в запросе AJAX:

 $.ajax({
  url: '/check-login/',
  ...
  

Комментарии:

1. Затем убедитесь, что ваш API действительно называется ‘check-login’. Возможно, попробуйте ‘check_login’