Импорт файлов Flask
Всем добрый, вечер. Есть небольшой проект на Flask, есть необходимость перенести адресацию в отдельный файл. Вроде как, все импорты подключены при этом ошибка::werkzeug.routing.BuildError: Could not build url for endpoint 'home'. Did you mean 'login' instead? В чем может быть проблема?
from flask import Flask
import os
from flask import current_app, g, render_template, redirect, request, session, url_for, flash
from flask.cli import with_appcontext
import fdb
import flaskr.db
app = Flask(__name__, instance_relative_config=True)
import flaskr.autorization
app.config.from_mapping(
SECRET_KEY = 'username',
DATABASE = os.path.join(app.instance_path, '/var/rdb/bdflask'),
USER = 'sysdba',
PASSWORD = 'masterkey',
LIBRARY = os.path.join(app.root_path, 'rdb/libfbclient.so.3.0.6')
)
@app.before_request
def before_request():
user_id = session.get('user_id')
if user_id is None:
g.user = None
else:
g.user = user_id
@app.route('/login', methods =["POST", "GET"])
def login():
if request.method == "POST":
user = request.form['username']
password = request.form['password']
conn = flaskr.db.get_db()
error = None
if conn is None:
error = 'Подключение к базе данных не найдено'
users = conn.cursor().execute('SELECT * FROM USERS').fetchall()
print(users)
if users is None:
error = 'Записи в бд не найдены'
else:
for x in users:
if x[2] == user and x[1] == password:
print('Вход выполнен')
clients = conn.cursor().execute('SELECT * FROM CLIENTS').fetchall()
for i in clients:
if i[1] == x[0]:
#вход клиента
session.clear()
session['user_id'] = x[0]
print('Клиент', session)
return redirect(url_for('home'))
masters = conn.cursor().execute('SELECT * FROM MASTER').fetchall()
for i in masters:
if i[1] == x[0]:
session.clear()
session['user_id'] = x[0]
print('Мастер',session)
elif x[2] == user and x[1] != password:
error = 'Не верный пароль'
break
elif x[2] != user:
error = 'Пользователь не найден'
conn = flaskr.db.close_db()
flash(error)
return render_template('login.html')
@app.route('/register', methods =["POST", "GET"])
def register():
if request.method == "POST":
client_reg = { 'name': request.form['name'], 'login': request.form['login'],
'password': request.form['password']}
error = None
for key in client_reg:
if client_reg[key]=='':
error = "Поле " + key + " не заполнено"
flash(error)
if error is None:
conn = flaskr.db.get_db()
if conn is None:
error = 'Подключение к базе данных не найдено'
flash(error)
else:
copies = conn.cursor().execute('SELECT ID_USERS, LOGIN FROM USERS WHERE LOGIN = ?',
(client_reg['login'],)).fetchall()
for i in copies:
if i[1]==client_reg['login']:
error = f'Телефон уже зарегистрирован'
flash(error)
if error is None:
conn.cursor().execute(
"INSERT INTO USERS (LOGIN, PASSWORD) VALUES (?, ?)",
(client_reg['login'], client_reg['password'])
)
data = conn.cursor().execute('SELECT * FROM USERS WHERE LOGIN = ?',
(client_reg['login'],)).fetchall()
print(data[0][0])
conn.cursor().execute(
"INSERT INTO CLIENTS (ID_USERS,NAME) VALUES (?, ?)",
(data[0][0], client_reg['name'])
)
conn.commit()
return redirect(url_for("login"))
#шифрование пароля
conn = flaskr.db.close_db()
return render_template('reg.html')
if __name__ == "__main__":
app.run(debug=True)
Импортируемый файл:
from flaskr import app
from flask import Flask
import os
from flask import current_app, g, render_template, redirect, request, session, url_for, flash
from flask.cli import with_appcontext
import fdb
import flaskr.db
@app.route('/home', methods =["POST", "GET"])
def home():
if g.user is None:
return redirect(url_for('login'))
else:
conn = flaskr.db.get_db()
buttons = '0'
if request.method == 'POST':
if 'edit' in request.form:
buttons = '1'
if 'save' in request.form:
buttons = '0'
name = request.form['name']
surname = request.form['surname']
patronomic = request.form['patronomic']
number_phone = request.form['phone']
marka = request.form['mark']
model = request.form['model']
number_auto = request.form['number_auto']
conn.cursor().execute('UPDATE CLIENTS SET NAME = ?, SURNAME = ?, PATRONOMIC = ?,'
'NUMBER_PHONE = ?, MARK_AUTO = ?, MODEL_AUTO = ?,'
'NUMBER_AUTO = ? WHERE ID_USERS = ?', (name, surname, patronomic,
number_phone, marka, model,
number_auto, g.user,))
conn.commit()
data_clients_profile = conn.cursor().execute('SELECT * FROM CLIENTS WHERE ID_USERS= ?',
(g.user,)).fetchall()
conn = flaskr.db.close_db()
return render_template('home_client.html', data=data_clients_profile, buttons = buttons)