[ 다루는 내용 ]

$ 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

 

다음 실습에는 아이디, 비번 값을 받아 활용하는 실습을 진행하겠습니다.

 

 

+ Recent posts