You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When choosing a Username that is already in use I get an error that points to the routes.py file. The error points to line 90 "db.session.commit()" inside the "def account(): " shown below.
`import secrets, os
from PIL import Image
from flask import render_template, url_for, flash, redirect, request
from flaskblog import app, db, bcrypt
from flask_login import login_user, current_user, logout_user, login_required
from flaskblog.forms import RegistrationForm, LoginForm, UpdateAccountForm
from flaskblog.models import User, Post
@app.route("/") # this is the route decorator.
@app.route("/home")
def home():
return render_template ('home.html', title = 'Home', posts=posts)
@app.route("/about") # this is the route decorator.
def about():
return render_template ('about.html', title = 'About',)
@app.route("/register", methods=[ 'GET','POST'])
def register():
if current_user.is_authenticated:
return redirect(url_for('home'))
form = RegistrationForm()
if form.validate_on_submit():
hashed_password = bcrypt.generate_password_hash(form.password.data).decode('utf-8')
user = User(username=form.username.data, email=form.email.data, password=hashed_password)
db.session.add(user)
db.session.commit()
flash(f'Your account has been created for {form.username.data}! You are now able to log in.', 'success')
return redirect(url_for('login'))
return render_template('register.html', title = 'Register', form=form)
@app.route("/login", methods=[ 'GET','POST'])
def login():
if current_user.is_authenticated:
return redirect(url_for('home'))
form = LoginForm()
if form.validate_on_submit():
user = User.query.filter_by(email=form.email.data).first()
if user and bcrypt.check_password_hash(user.password, form.password.data):
login_user(user, remember=form.remember.data)
next_page = request.args.get('next')
return redirect(next_page) if next_page else redirect(url_for('home'))
else:
flash('Login unsuccessful, please check username and password.', 'danger')
return render_template('login.html', title = 'Login', form=form)
def save_picture(form_picture):
random_hex = secrets.token_hex(8)
# the "_" below discards the information provided the only info collected is the extension.
_, f_ext = os.path.splitext(form_picture.filename)
picture_fn = random_hex + f_ext
picture_path = os.path.join(app.root_path, 'static/profile_pics', picture_fn)
output_size = (125,125)
i = Image.open(form_picture)
i.thumbnail(output_size)
i.save(picture_path)
return picture_fn
@app.route("/account", methods=[ 'GET','POST'])
@login_required
def account():
form = UpdateAccountForm()
if form.validate_on_submit():
if form.picture.data:
picture_file = save_picture(form.picture.data)
current_user.image_file = picture_file
# current_user.username, current_user.email = form.username.data, form.email.data
current_user.username = form.username.data
current_user.email = form.email.data
db.session.commit()
flash('Your account has been updated!', 'success')
return redirect(url_for('account'))
elif request.method =='GET': # the purpose is to auto populate the webform with existing values.
form.username.data = current_user.username
form.email.data = current_user.email
image_file = url_for('static', filename='profile_pics/' + current_user.image_file)
return render_template('account.html', title = 'Account', image_file=image_file, form=form)`
The text was updated successfully, but these errors were encountered:
When choosing a Username that is already in use I get an error that points to the routes.py file. The error points to line 90 "db.session.commit()" inside the "def account(): " shown below.
`import secrets, os
from PIL import Image
from flask import render_template, url_for, flash, redirect, request
from flaskblog import app, db, bcrypt
from flask_login import login_user, current_user, logout_user, login_required
from flaskblog.forms import RegistrationForm, LoginForm, UpdateAccountForm
from flaskblog.models import User, Post
posts = [
{
'author': 'Ethan,
'title': 'Seeds',
'comment': 'Book about seeds',
'date_post': '11/12/2021'
}
]
@app.route("/") # this is the route decorator.
@app.route("/home")
def home():
return render_template ('home.html', title = 'Home', posts=posts)
@app.route("/about") # this is the route decorator.
def about():
return render_template ('about.html', title = 'About',)
@app.route("/register", methods=[ 'GET','POST'])
def register():
if current_user.is_authenticated:
return redirect(url_for('home'))
form = RegistrationForm()
if form.validate_on_submit():
hashed_password = bcrypt.generate_password_hash(form.password.data).decode('utf-8')
user = User(username=form.username.data, email=form.email.data, password=hashed_password)
db.session.add(user)
db.session.commit()
flash(f'Your account has been created for {form.username.data}! You are now able to log in.', 'success')
return redirect(url_for('login'))
return render_template('register.html', title = 'Register', form=form)
@app.route("/login", methods=[ 'GET','POST'])
def login():
if current_user.is_authenticated:
return redirect(url_for('home'))
form = LoginForm()
if form.validate_on_submit():
user = User.query.filter_by(email=form.email.data).first()
if user and bcrypt.check_password_hash(user.password, form.password.data):
login_user(user, remember=form.remember.data)
next_page = request.args.get('next')
@app.route("/logout")
def logout():
logout_user()
return redirect(url_for('home'))
def save_picture(form_picture):
random_hex = secrets.token_hex(8)
# the "_" below discards the information provided the only info collected is the extension.
_, f_ext = os.path.splitext(form_picture.filename)
picture_fn = random_hex + f_ext
picture_path = os.path.join(app.root_path, 'static/profile_pics', picture_fn)
output_size = (125,125)
i = Image.open(form_picture)
i.thumbnail(output_size)
i.save(picture_path)
return picture_fn
@app.route("/account", methods=[ 'GET','POST'])
@login_required
def account():
form = UpdateAccountForm()
if form.validate_on_submit():
if form.picture.data:
picture_file = save_picture(form.picture.data)
current_user.image_file = picture_file
The text was updated successfully, but these errors were encountered: