【Flask】Message Flashing으로 메세지를 낸다
flash
메시지를 표시할 수 있습니다.
계층
여기 계속. 새롭게 user.html
를 추가했다.
프로그램 코드
app.pyfrom flask import Flask, redirect, url_for, render_template, request, session, flash #flash追加
from datetime import timedelta #時間情報を用いるため
app = Flask(__name__)
app.secret_key = 'user'
app.permanent_session_lifetime = timedelta(minutes=5) # -> 5分 #(days=5) -> 5日保存
@app.route("/")
def home():
return render_template("index.html")
@app.route("/login", methods = ["POST", "GET"])
def login():
#データベースに情報を送るとき
if request.method == "POST":
session.permanent = True # <--- makes the permanent session
user = request.form["nm"] #ユーザー情報を保存する
flash("Login Successful!!") #flash
session["user"] = user #sessionにuser情報を保存
return redirect(url_for("user"))
else: #情報を受け取るとき
if "user" in session: #sessionにユーザー情報があったとき
flash("Already Logged In!!") #flash
return redirect(url_for("user")) #userページに遷移
return render_template("login.html") #sessionにユーザー情報がなかったときはloginページに遷移
@app.route("/user")
def user():
if "user" in session:
user = session["user"] #sessionからユーザー情報をとってくる
return render_template("user.html", user=user)
else:
flash("You are not logged in!") #flash
return redirect(url_for("login"))
@app.route("/logout") #ログアウトする
def logout():
if "user" in session:
user = session["user"]
flash(f"You have been logged out, {user}", "info")
session.pop("user", None) #削除
return redirect(url_for("login"))
if __name__ == "__main__":
app.run(debug=True)
index.html{% extends "base.html" %}
{% block title %}Login Page{% endblock %}
{% block content %}
<form action="#" method="post">
<p>Name:</p>
<p><input type="text" name="nm" /></p>
<p><input type="submit" value="submit"/></p>
</form>
{% endblock %}
user.html{% extends "base.html" %}
{% block title %}User{% endblock %}
{% block content %}
{% with messages = get_flashed_messages() %}
{% if messages %}
{% for msg in messages %}
<p>{{msg}}</p>
{% endfor %}
{% endif %}
{% endwith %}
<p>Welcome, {{user}}</p>
{% endblock %}
사용법
flash를 가져옵니다.import flash
메시지는flash("You are not logged in!")
flash("メッセージ")
같이 쓴다.
메시지를 표시하고 싶을 때는 표시하고 싶은 파일 안에 (ex user.html
){% block content %} {% endblock %}
안에 다음 코드를 작성합니다.
{% with messages = get_flashed_messages() %} #flashのメッセージを受け取る
{% if messages %} #メッセージがあったら
{% for msg in messages %} #メッセージを一つずつ出力する
<p>{{msg}}</p> #pタグでメッセージを出力する
{% endfor %} #for終わり
{% endif %} #if終わり
{% endwith %} #flashメッセージ終わり
요약
여기 계속. 새롭게
user.html
를 추가했다.프로그램 코드
app.pyfrom flask import Flask, redirect, url_for, render_template, request, session, flash #flash追加
from datetime import timedelta #時間情報を用いるため
app = Flask(__name__)
app.secret_key = 'user'
app.permanent_session_lifetime = timedelta(minutes=5) # -> 5分 #(days=5) -> 5日保存
@app.route("/")
def home():
return render_template("index.html")
@app.route("/login", methods = ["POST", "GET"])
def login():
#データベースに情報を送るとき
if request.method == "POST":
session.permanent = True # <--- makes the permanent session
user = request.form["nm"] #ユーザー情報を保存する
flash("Login Successful!!") #flash
session["user"] = user #sessionにuser情報を保存
return redirect(url_for("user"))
else: #情報を受け取るとき
if "user" in session: #sessionにユーザー情報があったとき
flash("Already Logged In!!") #flash
return redirect(url_for("user")) #userページに遷移
return render_template("login.html") #sessionにユーザー情報がなかったときはloginページに遷移
@app.route("/user")
def user():
if "user" in session:
user = session["user"] #sessionからユーザー情報をとってくる
return render_template("user.html", user=user)
else:
flash("You are not logged in!") #flash
return redirect(url_for("login"))
@app.route("/logout") #ログアウトする
def logout():
if "user" in session:
user = session["user"]
flash(f"You have been logged out, {user}", "info")
session.pop("user", None) #削除
return redirect(url_for("login"))
if __name__ == "__main__":
app.run(debug=True)
index.html{% extends "base.html" %}
{% block title %}Login Page{% endblock %}
{% block content %}
<form action="#" method="post">
<p>Name:</p>
<p><input type="text" name="nm" /></p>
<p><input type="submit" value="submit"/></p>
</form>
{% endblock %}
user.html{% extends "base.html" %}
{% block title %}User{% endblock %}
{% block content %}
{% with messages = get_flashed_messages() %}
{% if messages %}
{% for msg in messages %}
<p>{{msg}}</p>
{% endfor %}
{% endif %}
{% endwith %}
<p>Welcome, {{user}}</p>
{% endblock %}
사용법
flash를 가져옵니다.import flash
메시지는flash("You are not logged in!")
flash("メッセージ")
같이 쓴다.
메시지를 표시하고 싶을 때는 표시하고 싶은 파일 안에 (ex user.html
){% block content %} {% endblock %}
안에 다음 코드를 작성합니다.
{% with messages = get_flashed_messages() %} #flashのメッセージを受け取る
{% if messages %} #メッセージがあったら
{% for msg in messages %} #メッセージを一つずつ出力する
<p>{{msg}}</p> #pタグでメッセージを出力する
{% endfor %} #for終わり
{% endif %} #if終わり
{% endwith %} #flashメッセージ終わり
요약
from flask import Flask, redirect, url_for, render_template, request, session, flash #flash追加
from datetime import timedelta #時間情報を用いるため
app = Flask(__name__)
app.secret_key = 'user'
app.permanent_session_lifetime = timedelta(minutes=5) # -> 5分 #(days=5) -> 5日保存
@app.route("/")
def home():
return render_template("index.html")
@app.route("/login", methods = ["POST", "GET"])
def login():
#データベースに情報を送るとき
if request.method == "POST":
session.permanent = True # <--- makes the permanent session
user = request.form["nm"] #ユーザー情報を保存する
flash("Login Successful!!") #flash
session["user"] = user #sessionにuser情報を保存
return redirect(url_for("user"))
else: #情報を受け取るとき
if "user" in session: #sessionにユーザー情報があったとき
flash("Already Logged In!!") #flash
return redirect(url_for("user")) #userページに遷移
return render_template("login.html") #sessionにユーザー情報がなかったときはloginページに遷移
@app.route("/user")
def user():
if "user" in session:
user = session["user"] #sessionからユーザー情報をとってくる
return render_template("user.html", user=user)
else:
flash("You are not logged in!") #flash
return redirect(url_for("login"))
@app.route("/logout") #ログアウトする
def logout():
if "user" in session:
user = session["user"]
flash(f"You have been logged out, {user}", "info")
session.pop("user", None) #削除
return redirect(url_for("login"))
if __name__ == "__main__":
app.run(debug=True)
{% extends "base.html" %}
{% block title %}Login Page{% endblock %}
{% block content %}
<form action="#" method="post">
<p>Name:</p>
<p><input type="text" name="nm" /></p>
<p><input type="submit" value="submit"/></p>
</form>
{% endblock %}
{% extends "base.html" %}
{% block title %}User{% endblock %}
{% block content %}
{% with messages = get_flashed_messages() %}
{% if messages %}
{% for msg in messages %}
<p>{{msg}}</p>
{% endfor %}
{% endif %}
{% endwith %}
<p>Welcome, {{user}}</p>
{% endblock %}
flash를 가져옵니다.
import flash
메시지는
flash("You are not logged in!")
flash("メッセージ")
같이 쓴다.메시지를 표시하고 싶을 때는 표시하고 싶은 파일 안에 (ex
user.html
){% block content %} {% endblock %}
안에 다음 코드를 작성합니다. {% with messages = get_flashed_messages() %} #flashのメッセージを受け取る
{% if messages %} #メッセージがあったら
{% for msg in messages %} #メッセージを一つずつ出力する
<p>{{msg}}</p> #pタグでメッセージを出力する
{% endfor %} #for終わり
{% endif %} #if終わり
{% endwith %} #flashメッセージ終わり
요약
app.py
의 View 프로그램 중에서 flash()
하면 메시지를 설정할 수 있다. flash()
한 메시지는 템플릿의 HTML에서 get_flashed_message()
하는 것으로 꺼낼 수 있다. 참고
Flask Tutorial #6 - Message Flashing
Reference
이 문제에 관하여(【Flask】Message Flashing으로 메세지를 낸다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/eee-lin/items/8cb294dd82bca919f413
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(【Flask】Message Flashing으로 메세지를 낸다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/eee-lin/items/8cb294dd82bca919f413텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)