Бывает, что python-функция ничего не возращает (то есть сначало все работает нормально, потом по какой-то причине запрос не доходит, а потом опять все нормально), то есть это доходит до питона из js, но назад ничего не приходит.
В Network идет запрос на test/, тогда вся необходимая информация приходит, но иногда запрос не идет и опять вылетает ошибка:
Exception occurred during processing of request from ('127.0.0.1', 63270)
Traceback (most recent call last):
File "C:\Users\drygo\AppData\Local\Programs\Python\Python39\lib\socketserver.py", line 683, in process_request_thread
self.finish_request(request, client_address)
File "C:\Users\drygo\AppData\Local\Programs\Python\Python39\lib\socketserver.py", line 360, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "C:\Users\drygo\AppData\Local\Programs\Python\Python39\lib\socketserver.py", line 747, in __init__
self.handle()
File "C:\Users\drygo\AppData\Local\Programs\Python\Python39\lib\site-packages\django\core\servers\basehttp.py", line 174, in handle
self.handle_one_request()
File "C:\Users\drygo\AppData\Local\Programs\Python\Python39\lib\site-packages\django\core\servers\basehttp.py", line 182, in handle_one_request
self.raw_requestline = self.rfile.readline(65537)
File "C:\Users\drygo\AppData\Local\Programs\Python\Python39\lib\socket.py", line 704, in readinto
return self._sock.recv_into(b)
ConnectionAbortedError: [WinError 10053] Программа на вашем хост-компьютере разорвала установленное подключение
похоже на какие-то проблемы с настройкой Джанговского сервера, ОС и т.д.
Может какие-то недоработки локального Джанговского сервера, он только для использования во время разработки предназначен.
Если проблема только с ajax, то гугл советует проверить таймаут. По идее его и так не должно быть по умолчанию, но на всякий случай можно попробовать указать большое значение.
Нмчего там нет, просто на милиссекунды появляется запрос на test/. И это все как-то странно, иногда запросы идет, но функция ничего не возвращает( хотя в консоли все отображается), а иногда вылетает ошибка, о которой писал выше.
Я попробовал сменить версию питона на 3.7.0 (до этого была 3.9.5), ошибка ушла, но теперь появилась ошибка Broken pipe from ('127.0.0.1', 50513), я почитал про нее, и вроде бы это никак не сказывается на работоспособности, но почему-то нет ридеректа, хотя вход происходит.
def log_hand(request):
try:
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
return HttpResponseRedirect('/main/')
else:
return JsonResponse({'v': 'no'})
else:
return JsonResponse({'v': 'no'})
except:
return JsonResponse({'v': 'no'})
Вообщем установил я линукс). Пока ошибок нет, посмотрим, что будет дальше)
Как можно проверять в js, есть ли в запросе какая-то информация. То есть у меня есть форма, которая отправляет запрос на url, а там, если юзер есть то происходит вход и ридерект, а если нет, то возврашается JsonResponse, и как можно сделать js функцию, которая обрабатывает это и говорит, что пароль неправильный?
Только тут непонятно почему при успешном логине оно редиректит, а не JSON отправляет. Страница в браузере не поменяется от редиректа запросов отправленных JS.
Тут наверно лучше всегда JSON отдавать с описанием результата операции, и проверив его делать что надо через JS. window.location.href = ... чтоб перейти на другую страницу из JS.
Это если использовать ajax (потому что редиректа почему-то не происходило в питоне), я его убрал и просто использую action, поэтому не получится использовать success