При создании регистрации для сайта, возникла проблема что redirect не переадресовывает на страницу авторизации. При том что GET запрос отправляется, а сама страница не загружается. Что не правильно?
Python
from flask import Flask, url_for, render_template, request, g, session, redirect, make_response
import jinja2
import mysql.connector
import json
app = Flask (__name__, template_folder = '../templates', static_folder = '../static')
@app.route('/')
def index():
return render_template('index.html')
url = ''
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
data = json.loads(request.data)
print('ok')
return render_template('login.html')
@app.route('/registration', methods=['GET', 'POST'])
def registration():
if request.method == 'POST':
data = json.loads(request.data)
name = data['name']
print(name)
return redirect(url_for('login'))
return render_template('registration.html')
if __name__ == '__main__':
app.run(debug=True)
Javascript регестрация
let form = document.getElementById('form');
let registration_url = '/registration' // обработчик для url
// флаги данных для проверки
let correct_name = false;
let correct_full_name = false;
let correct_login = false;
let correct_email = false;
let correct_password = false;
let correct_password2 = false;
let correct_tel = false;
let numbers_in_password = 0;
let symbols_in_password = 0;
// проверочные данные
let english_symbols = 'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM!@#$%^&*()_+-=[]{}|.,`~§';
let numbers = '1234567890';
// поля для ввода данных
let tel_input = document.getElementById('tel');
let password_input = document.getElementById('password1');
let password_input2 = document.getElementById('password2');
let data_inputs = document.querySelectorAll('.data_input');
let data_inputs_containers = document.querySelectorAll('.input_container');
let submit_button = document.getElementById('submit_button');
let name_input = document.getElementsByName('name')[0];
let full_name_input = document.getElementsByName('full_name')[0];
let login_input = document.getElementsByName('login')[0];
let email_input = document.getElementsByName('email')[0];
// поля для вывода ошибок
let incorrect_name = document.getElementsByClassName('incorrect_text')[0];
let incorrect_full_name = document.getElementsByClassName('incorrect_text')[1];
let incorrect_login = document.getElementsByClassName('incorrect_text')[2];
let incorrect_email = document.getElementsByClassName('incorrect_text')[3];
let incorrect_password = document.getElementsByClassName('incorrect_text')[4];
let incorrect_password2 = document.getElementsByClassName('incorrect_text')[5];
let incorrect_tel = document.getElementsByClassName('incorrect_text')[6];
// фильтр для проверки валидности номера телефона
tel_input.addEventListener('input', function(){
if(tel_input.value.length >= 1){
tel_input.value = '+' + tel_input.value.replace(/\D/g, '');// удаление всего кроме цифр и авто добавление +
}
if(tel_input.value == '+' || tel_input.value == ' '){
tel_input.value = '';// авто удаление пробелов и плюсов
}
});
let eye_button = document.getElementById('eye_button');// кнопка видимости
// эффект при нажатии на поле ввода
for(let i = 0; i < data_inputs.length; i++){
data_inputs[i].addEventListener('focus', function(){
data_inputs_containers[i].setAttribute('class', 'active_input_container');
});
data_inputs[i].addEventListener('blur', function(){
data_inputs_containers[i].setAttribute('class', 'input_container');
});
}
//Видимость и невидимость пароля при вводе
eye_button.addEventListener('click', function(){
if(password_input.getAttribute('type') == 'password'){
eye_button.innerHTML = `
<i class="far fa-eye-slash"></i>
`;
password_input.setAttribute('type', 'text');
password_input2.setAttribute('type', 'text');
}else if(password_input.getAttribute('type') == 'text'){
eye_button.innerHTML = `
<i class="far fa-eye"></i>
`;
password_input.setAttribute('type', 'password');
password_input2.setAttribute('type', 'password');
}
});
form.addEventListener('submit', function(e){
e.preventDefault();
//ограничения для названия компании
if(name_input.value == ''){
incorrect_name.innerHTML = 'Введите название компании пожалуйста.';
correct_name = false;
}else if(name_input.value.length < 2){
incorrect_name.innerHTML = 'Вы ввели слишком короткий название.';
correct_name = false;
}else{
incorrect_name.innerHTML = '';
correct_name = true;
}
//ограничения для полного названия компании
if(full_name_input.value == ''){
incorrect_full_name.innerHTML = 'Введите название компании пожалуйста.';
correct_full_name = false;
}else if(full_name_input.value.length < 2){
incorrect_full_name.innerHTML = 'Вы ввели слишком короткий название.';
correct_full_name = false;
}else{
incorrect_full_name.innerHTML = '';
correct_full_name = true;
}
// ограничения для логина компании
if(login_input.value == ''){
incorrect_login.innerHTML = 'Введите логин компании пожалуйста.';
correct_login = false;
}else if(login_input.value.length < 2){
incorrect_login.innerHTML = 'Вы ввели слишком короткий логин.';
correct_login = false;
}else if(login_input.value.indexOf(' ') != -1){
incorrect_login.innerHTML = 'Логин не должен содержать пробелы. Вместо их может использовать "_".';
correct_login = false;
}else{
for(let i = 0;i < login_input.value.length; i++){
if(english_symbols.indexOf(login_input.value[i]) == -1 && numbers.indexOf(login_input.value[i]) == -1){
console.log(login_input.value[i])
incorrect_login.innerHTML = 'Логин должен содержать только латынские символы или цифры.';
correct_login = false;
break;
}else{
incorrect_login.innerHTML = '';
correct_login = true;
}
}
}
// ограничения для электронной почты компании
if(email_input.value == ''){
incorrect_email.innerHTML = 'Введите электронную почту пожалуйста.';
correct_email = false;
}else if(email_input.value.indexOf('@') == 0 || email_input.value.indexOf('@') == email_input.value.length-1 || email_input.value.indexOf('@') == -1){
incorrect_email.innerHTML = 'Не верный формат электронной почты.';
correct_email = false;
}else{
incorrect_email.innerHTML = '';
correct_email = true;
}
// ограничения для пароля
symbols_in_password = 0;
numbers_in_password = 0;
if(password_input.value == ''){
incorrect_password.innerHTML = 'Введите пароль пожалуйста.';
correct_password = false;
}else if(password_input.value.length < 6){
incorrect_password.innerHTML = 'Вы ввели слишком короткий пароль.';
correct_password = false;
}else{
for(let i = 0;i < password_input.value.length; i++){
if(english_symbols.indexOf(password_input.value[i]) != -1){
correct_password = false;
symbols_in_password += 1;
}
if(numbers.indexOf(password_input.value[i]) != -1){
correct_password = false;
numbers_in_password += 1;
}
}
if(numbers_in_password < 1){
incorrect_password.innerHTML = 'В Вашем пароле должны быть цифры.';
correct_password = false;
}
if(symbols_in_password < 1){
incorrect_password.innerHTML = 'Пароль должен содержать латынские символы.';
correct_password = false;
}
if(numbers_in_password >= 1 && symbols_in_password >= 1 && password_input.value.length >= 6){
incorrect_password.innerHTML = '';
correct_password = true;
}
}
// ограничения для поворения пароля
if(password_input2.value == ''){
incorrect_password2.innerHTML = 'Повторите пароль пожалуйста.';
correct_password2 = false;
}else if(password_input2.value != password_input.value){
incorrect_password2.innerHTML = 'Не верный пароль.';
correct_password2 = false;
}else{
incorrect_password2.innerHTML = '';
correct_password2 = true;
}
// ограничения для номера телефона
if(tel_input.value == ''){
incorrect_tel.innerHTML = 'Введите пароль пожалуйста.';
correct_tel = false;
}else if(tel_input.value.indexOf('+') == -1){
incorrect_tel.innerHTML = 'Не верный формат номера телефона.';
correct_tel = false;
}else{
incorrect_tel.innerHTML = '';
correct_tel = true;
}
// console.log(correct_name);
// console.log(correct_full_name);
// console.log(correct_login);
// console.log(correct_email);
// console.log(correct_password);
// console.log(correct_password2);
// console.log(correct_tel);
if(correct_name && correct_full_name && correct_login && correct_email && correct_password && correct_password2 && correct_tel){
let data = {
'name': name_input.value,
'full_name': full_name_input.value,
'login': login_input.value,
'email': email_input.value,
'password': password_input.value,
'tel': tel_input.value
}
fetch(registration_url, {method: 'POST', body: JSON.stringify(data)});
}
});