Реализация самой простой авторизации на Flask
При регистрации в /add в файл blog.db добавляются данные логина и пароля
@app.route('/add', methods=['POST', 'GET'])
def addlp():
if request.method == 'POST':
login = request.form['login']
password = request.form['password']
article = Article(login=login, password=password)
try:
db.session.add(article)
db.session.commit()
return redirect('/')
except:
return 'При добавлении данных произошла ошибка'
else:
return render_template('add.html')
return render_template('add.html')
Могу ли я реализовать авторизацию, просто сравнив содержимое базы данных с тем, что ввёл пользователь? Вот что-то вроде примера, но оно не работает
@app.route('/login', methods=['GET', 'POST'])
def login_page():
if request.method == 'POST':
login = request.form.get('login')
password = request.form.get('password')
if login and password in db:
return render_template('success.html')
else:
return 'uncorrect'
То есть мне нужно просто сделать регистрацию и авторизацию, которые, в целом, ни на что не будут влиять. Как это сделать максимально просто? Весь код:
from flask import Flask, render_template, request, redirect, flash
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.secret_key = 'some secret salt'
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///blog.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
class Article(db.Model):
id = db.Column(db.Integer, primary_key=True)
login = db.Column(db.Text, nullable=False)
password = db.Column(db.Text, nullable=False)
def __repr__(self):
return '<Article %r>' % self.id
@app.route('/')
def indexx():
return render_template('index.html')
@app.route('/app')
def cbox():
return render_template('country.html')
@app.route('/about')
def about():
return render_template('about.html')
@app.route('/posts')
def posts():
articles = Article.query.order_by(Article.id.desc()).all()
return render_template('posts.html', articles=articles)
@app.route('/login', methods=['GET', 'POST'])
def login_page():
if request.method == 'POST':
login = request.form.get('login')
password = request.form.get('password')
if login and password in db:
return render_template('success.html')
else:
return 'uncorrect'
@app.route('/add', methods=['POST', 'GET'])
def addlp():
if request.method == 'POST':
login = request.form['login']
password = request.form['password']
article = Article(login=login, password=password)
try:
db.session.add(article)
db.session.commit()
return redirect('/')
except:
return 'При добавлении данных произошла ошибка'
else:
return render_template('add.html')
return render_template('add.html')
if __name__ == '__main__':
app.run(debug=True)