Загрузка данных
#!
from flask import Flask, render_template, request, redirect, flash, url_for, session
from sqlmodel import Field, SQLModel, Session, select, create_engine
app = Flask(__name__)
app.secret_key = 'opfgiwre0fwejf09-wej0fwe09fh02408f0892eb098fwe908fg809we'
sqlite_url = "sqlite:///database.db"
engine = create_engine(sqlite_url)
#! ДОПИСАТЬ С НИКИТОЙ -----------------------------
#! Модель пользователя
class User(SQLModel, table=True):
id: int | None = Field(default=None, primary_key=True)
username: str = Field(index=True, unique=True)
password: str
class Products(SQLModel, table=True):
id: int | None = Field(default=None, primary_key=True)
name: str
memory: str
price: str
#! Создаем таблицы при запуске
with app.app_context():
SQLModel.metadata.create_all(engine)
@app.route('/register', methods=['GET', 'POST'])
def register():
if request.method == 'POST':
username = request.form['username'] #! Nikita
password = request.form['password'] #! 12345
password1 = request.form['password1'] #! 12345
with Session(engine) as db_session:
#! Проверка, нет ли такого пользователя
statement = select(User).where(User.username == username) #! True или False
#!
existing_user = db_session.exec(statement).first()
if existing_user:
return "Пользователь уже существует!"
if password != password1:
return "Пароли не совпадают!"
#! User(username="Nikita", password="12345")
new_user = User(username=username, password=password)
#! ДОБАВЛЯЕМ ЧЕЛОВЕКА В БАЗУ ДАННЫХ
db_session.add(new_user)
#! СОХРАНЯЕМ БАЗУ ДАННЫХ
db_session.commit()
return redirect(url_for('login'))
return render_template('register.html')
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
with Session(engine) as db_session:
statement = select(User).where(User.username == username, User.password == password) #! True
user = db_session.exec(statement).first()
if user:
session['user_id'] = user.id
session['username'] = user.username
return redirect(url_for('index'))
else:
return "Неверный логин или пароль"
return render_template('login.html')
@app.route('/logout')
def logout():
session.clear()
return redirect(url_for('login'))
#!-----------------------------
@app.route('/')
def index():
#! ЭТО ТОЖЕ
user_id = session.get('user_id')
username = session.get('username')
#! ---------------------- ЭТО ТОЖЕ
#! В index.html дописать немного код
return render_template('index.html', username=username)
@app.route('/about')
def about():
return render_template('about.html')
@app.route('/username/<username>/<cart>')
def user(username, cart):
cart_list = cart.split(' ')
return f"Пользователь: {username}. Корзина: {cart_list}"
phones = []
@app.route('/add', methods=['GET', 'POST'])
def add_phone():
if request.method == 'POST':
name = request.form['name']
memory = request.form['memory']
price = request.form['price']
with Session(engine) as db_session:
new_product = Products(
name=name,
memory=memory,
price=price,
)
db_session.add(new_product)
db_session.commit()
return redirect('/add')
#! --- ИЗМЕНЕНИЯ ТУТ ---
# Получаем все товары из базы данных
with Session(engine) as db_session:
statement = select(Products)
all_products = db_session.exec(statement).all()
return render_template('add_product.html', phones=all_products)
if __name__ == '__main__':
app.run(debug=True)