플라스크 3-07에서 error 문구가 뜨지 않고 있습니다.
안녕하세요!
플라스크 3-07에서
if not user:
error = "존재하지 않는 사용자입니다."
저게 떠야 하는데...
제가 실습 중일 때는 저게 먹질 않습니다.
분기문은 타고 있는데 error이 form_error.html에서 진행이 안되고 있습니다...
form_errors.html
<!-- 필드오류 -->
{% if form.errors %}
<div class="alert alert-danger" role="alert">
{% for field, errors in form.errors.items() %}
<strong>{{ form[field].label }}</strong>
<ul>
{% for error in errors %}
<li>{{ error }}</li>
{% endfor %}
</ul>
{% endfor %}
</div>
{% endif %}
<!-- flash 오류 -->
{% for message in get_flashed_messages() %}
<div class="alert alert-danger" role="alert">
{{ message }}
</div>
{% endfor %}
db를 다르게 반영해서 실습 내용과 조금 다릅니다.(차이는 없습니다)
auth_views.py
@bp.route('/login/', methods=('GET', 'POST'))
def login():
form = UserLoginForm()
if request.method == 'POST' and form.validate_on_submit():
error = None
username = form.username.data
user = login_id(username) # db에서 값을 받아옴. 정상적으로 받아옴 없으면 None
if not user:
error = "존재하지 않는 사용자."
elif not check_password_hash(user[2], form.password.data): # 비번은 check_password_hash 함수로 암호화 후 db의 값과 비교
error = "비밀번호가 올바르지 않습니다."
if error is None:
session.clear()
session['user_id'] = user[0]
return redirect(url_for('main.index'))
return render_template('auth/login.html', form=form)
login.html
{% extends "base.html" %}
{% block content %}
<div class="container">
<h5 class="my-3 border-bottom pb-2">로그인</h5>
<form method="post">
{{ form.csrf_token }}
{% include "form_errors.html" %}
<div class="mb-3">
<label for="username">사용자 이름</label>
<input type="text" class="form-control" name="username" id="username" value="{{ form.username.data or '' }}">
</div>
<div class="mb-3">
<label for="password">비밀번호</label>
<input type="password" class="form-control" name="password" id="password" value="{{ form.password.data or '' }}">
</div>
<button type="submit" class="btn btn-primary">로그인</button>
</form>
</div>
{% endblock %}
하다하다 안되서 질문 남겨봅니다...
한번더 말씀 드리자면 error = "존재하지 않는 사용자입니다" 이게 login.html에서 뜨지 않고 있습니다..
kingsman 님 475
M 2022년 8월 5일 10:59 오전