Working Example

This commit is contained in:
Rich
2021-07-03 19:40:40 +01:00
parent d50fbde5de
commit c357c654a6
16 changed files with 416 additions and 23 deletions

View File

@@ -1,9 +1,14 @@
from flask import Flask
from config import Config
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
from flask_login import LoginManager
app = Flask(__name__)
app.config["SECRET_KEY"] = "fdsaGHJ768fdsGHKJHG656&*(&%&*(fsd"
app.config.from_object(Config)
db = SQLAlchemy(app)
migrate = Migrate(app, db)
login = LoginManager(app)
login.login_view = "login"
from app import routes
from app import routes, models

View File

@@ -6,5 +6,4 @@ from wtforms.validators import DataRequired
class LoginForm(FlaskForm):
username = StringField("Username", validators=[DataRequired()])
password = PasswordField("Password", validators=[DataRequired()])
remember_me = BooleanField("Remember Me")
submit = SubmitField("Sign In")

View File

@@ -1,9 +1,18 @@
from werkzeug.security import generate_password_hash, check_password_hash
from flask_login import UserMixin
from app import login
from werkzeug.security import check_password_hash, generate_password_hash
from app import db, login
class User(UserMixin):
class User(UserMixin, db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(64), index=True, unique=True)
email = db.Column(db.String(120), index=True, unique=True)
password_hash = db.Column(db.String(128))
def __repr__(self):
return "<User {}>".format(self.username)
def set_password(self, password):
self.password_hash = generate_password_hash(password)
@@ -13,4 +22,4 @@ class User(UserMixin):
@login.user_loader
def load_user(id):
return 0
return User.query.get(int(id))

View File

@@ -1,10 +1,19 @@
from flask import render_template, flash, redirect, url_for
from flask import flash, redirect, render_template, url_for
from flask_login import current_user, login_required, login_user, logout_user
from app import app
from app.forms import LoginForm
from flask_login import current_user, login_user, login_required
from app.models import User
@app.route("/")
@app.route("/index")
@login_required
def index():
user = {"username": "Miguel"}
return render_template("index.html", title="Home", user=user)
@app.route("/login", methods=["GET", "POST"])
def login():
if current_user.is_authenticated:
@@ -20,13 +29,7 @@ def login():
return render_template("login.html", title="Sign In", form=form)
@app.route("/")
@app.route("/index")
@login_required
def index():
user = {"username": "Miguel"}
posts = [
{"author": {"username": "John"}, "body": "Beautiful day in Portland!"},
{"author": {"username": "Susan"}, "body": "The Avengers movie was so cool!"},
]
return render_template("index.html", title="Home", user=user, posts=posts)
@app.route("/logout")
def logout():
logout_user()
return redirect(url_for("index"))

View File

@@ -4,11 +4,17 @@
{{ form.hidden_tag() }}
<p>
{{ form.username.label }}<br>
{{ form.username(size=32) }}
{{ form.username(size=32) }}<br>
{% for error in form.username.errors %}
<span style="color: red;">[{{ error }}]</span>
{% endfor %}
</p>
<p>
{{ form.password.label }}<br>
{{ form.password(size=32) }}
{{ form.password(size=32) }}<br>
{% for error in form.password.errors %}
<span style="color: red;">[{{ error }}]</span>
{% endfor %}
</p>
<p>{{ form.submit() }}</p>
</form>