좋은 어플리케이션과 사용자 인터페이스의 모든것은 피드백이다. 사용자가 충분한 피드백을 얻지 못한다면 그들은 결국 그 어플리케이션을 싫어할 것이다.
플라스크는 플래싱 시스템을 가지고 사용자에게 피드백을 주는 정말 간단한 방법을 제공한다. 플래싱 시스템은 기본적으로 요청의 끝에 메시지를 기록하고 그 다음 요청에서만 그 메시지에 접근할 수 있게 한다. 보통은 플래싱을 처리하는 레이아웃 템플릿과 결함되어 사용된다.
📑 현재 연습중인 Flask 인증 테스트 코드에 간단한 예제를 넣었다.
flask('피드백 내용')
을 입력해준다.manin.py
@app.route('/register', methods=["GET", "POST"])
def register():
if request.method == "POST":
if User.query.filter_by(email=request.form.get('email')).first():
# User already exists
flash("이미 등록된 이메일입니다, 다른 이메일을 사용해주세요.")
return redirect(url_for('login'))
hash_and_salted_password = generate_password_hash(
request.form.get('password'),
method='pbkdf2:sha256',
salt_length=8
)
new_user = User(
email=request.form.get('email'),
name=request.form.get('name'),
password=hash_and_salted_password,
)
db.session.add(new_user)
db.session.commit()
# Log in and authenticate user after adding details to database.
login_user(new_user)
return redirect(url_for("secrets"))
return render_template("register.html")
@app.route('/login', methods=["GET", "POST"])
def login():
if request.method == "POST":
email = request.form.get('email')
password = request.form.get('password')
# Find user by email entered.
user = User.query.filter_by(email=email).first()
if user is None:
flash("해당 이메일은 등록되지 않은 이메일입니다.")
return redirect(url_for("login"))
elif not check_password_hash(user.password, password):
flash('비밀번호가 틀렸습니다, 다시 확인후 입력해주세요.')
return redirect(url_for('login'))
# Email exists and password correct
else:
login_user(user)
return redirect(url_for('secrets'))
return render_template("login.html")
login.html
{% extends "base.html" %}
{% block content %}
<div class="box">
<h1>Login</h1>
{% with messages = get_flashed_messages() %}
{% if messages %}
{% for message in messages %}
<p>{{ message }}</p>
{% endfor %}
{% endif %}
{% endwith %}
<form action="{{ url_for('login') }}" method="post">
<input type="text" name="email" placeholder="Email" required="required"/>
<input type="password" name="password" placeholder="Password" required="required"/>
<button type="submit" class="btn btn-primary btn-block btn-large">Let me in.</button>
</form>
</div>
{% endblock %}