[ 다루는 내용 ]
$ pip install flask-wtf
$ vim config.py
$ vim app/__init__.py
$ python
>>> from microblog import app
>>> app.config['SECRET_KEY']
$ vim app/forms.py
$ vim app/templates/login.html
$ vim app/routes.py
$ vim app/templates/base.html
$ flask run --host 0.0.0.0 --port 5001
이전 실습은 아래 링크를 통해 확인할 수 있습니다.
https://growingsaja.tistory.com/267
1. Flask-WTF 확장을 위한 설치
$ pip install flask-wtf
2. config 파일 생성
비밀키를 구성해줍니다.
$ vim config.py
import os
class Config(object):
SECRET_KEY = os.environ.get('SECRET_KEY') or 'you-will-never-guess'
3. app/__init__.py 에서 config.py의 Config 클래스를 사용하도록 수정
$ vim app/__init__.py
from flask import Flask
from config import Config
app = Flask(__name__)
app.config.from_object(Config)
from app import routes
4. SECRET_KEY의 값 확인하기
$ python
>>> from microblog import app
>>> app.config['SECRET_KEY']
5. Web Form 만들기
$ vim app/forms.py
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, BooleanField, SubmitField
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')
6. Login Form 만들기
$ vim app/templates/login.html
{% extends "base.html" %}
{% block content %}
<h1>Sign In</h1>
<form action="" method="post" novalidate>
{{ form.hidden_tag() }}
<p>
{{ form.username.label }}<br>
{{ form.username(size=32) }}
</p>
<p>
{{ form.password.label }}<br>
{{ form.password(size=32) }}
</p>
<p>{{ form.remember_me() }} {{ form.remember_me.label }}</p>
<p>{{ form.submit() }}</p>
</form>
{% endblock %}
7. 로그인 보기 기능 추가
$ vim app/routes.py
================================================
from app.forms import LoginForm
#################
@app.route('/login')
def login():
testform = LoginForm()
return render_template('login.html', title='Sign In', testform=form)
================================================
from app import app
from flask import render_template
from app.forms import LoginForm
@app.route('/')
@app.route('/index')
def index():
testuser = {'username':'Miguel'}
testposts = [
{
'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=testuser, posts=testposts)
@app.route('/login')
def login():
testform = LoginForm()
return render_template('login.html', title='Sign In', form=testform)
8. 탐색 모음 로그인 링크 추가
$ vim app/templates/base.html
<div> ~~~ </div> 부분에 Login 추가하기
<html>
<head>
{% if title %}
<title>{{ title }} - Microblog</title>
{% else %}
<title>Welcome to Microblog</title>
{% endif %}
</head>
<body>
<div>
Microblog:
<a href="/index">Home</a>
<a href="/login">Login</a>
</div>
<hr>
{% block content %}{% endblock %}
</body>
</html>
9. 로그인 버튼 정상 작동 및 Login 페이지 상태 정상 확인
$ flask run --host 0.0.0.0 --port 5001
다음 실습에는 아이디, 비번 값을 받아 활용하는 실습을 진행하겠습니다.