1.
Thẻ HTML và truyền biến
from flask import Flask, redirect, url_for, render_template
app = Flask(__name__)
@[Link]('/')
def hello_wordl():
return "<h3> The Hung </h3>"
#The HTML, Truyen bien, chuyen trang
@[Link] ('/admin')
def hello_admin():
return f"<h1> Xin chao admin!</h1>"
@[Link]('/user/<name>')
def hello_user(name):
if name == 'admin':
return redirect(url_for('hello_admin'))
return f"<h1> Hello {name}!</h1>"
if __name__=="__main__":
[Link](debug=True)
[Link] template
3.Kế thừa Template
from flask import Flask, redirect, url_for, render_template
app = Flask(__name__)
@[Link]('/')
def hello_wordl():
return render_template('[Link]')
if __name__=="__main__":
[Link](debug=True)
#Home
{% extends '[Link]' %}
{% block title %}Home Page{% endblock %}
{% block content %}
<h2>This is Home Page</h2>
{% endblock %}
#Base
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE-edge">
<meta name="viewport" content="width = device-width, initial-scale=1.0">
<link rel="stylesheet"
href="[Link]
"
integrity="sha384-
ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T"
crossorigin="anonymous">
<title> {% block title %} {% endblock %} </title>
</head>
<body>
<h1> My website </h1>
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<a class="navbar-brand" href="#">Navbar</a>
<button class="navbar-toggler" type="button" data-toggle="collapse"
data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent"
aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav mr-auto">
<li class="nav-item active">
<a class="nav-link" href="#">Home <span class="sr-
only">(current)</span></a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#"
id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true"
aria-expanded="false">
Dropdown
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="#">Action</a>
<a class="dropdown-item" href="#">Another action</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="#">Something else here</a>
</div>
</li>
<li class="nav-item">
<a class="nav-link disabled" href="#" tabindex="-1" aria-
disabled="true">Disabled</a>
</li>
</ul>
<form class="form-inline my-2 my-lg-0">
<input class="form-control mr-sm-2" type="search"
placeholder="Search" aria-label="Search">
<button class="btn btn-outline-success my-2 my-sm-0"
type="submit">Search</button>
</form>
</div>
</nav>
{% block content %} {% endblock %}
</body>
<script src="[Link]
integrity="sha384-
q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"
crossorigin="anonymous"></script>
<script
src="[Link]
integrity="sha384-
UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1"
crossorigin="anonymous"></script>
<script
src="[Link]
integrity="sha384-
JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM"
crossorigin="anonymous"></script>
</html>
4. HTTP METHODS, POST AND GET
from flask import Flask, redirect, url_for, render_template, request
app = Flask(__name__)
@[Link]('/')
def hello_wordl():
return render_template('[Link]')
@[Link]("/login", methods=["POST", "GET"])
def login():
if [Link] == "POST":
user_name = [Link]["name"]
if user_name:
return redirect(url_for("hello_user", name=user_name))
return render_template("[Link]")
@[Link]('/user/<name>')
def hello_user(name):
return f"<h1> Hello {name}!</h1>"
if __name__=="__main__":
[Link](debug=True)
#Login
{% extends "[Link]" %}
{% block title %}Login Page{% endblock %}
{% block content %}
<h2>This is Login Page</h2>
<div style="margin-left: 50px;">
<form action="#" method="post">
<label for="">Name</label>
<input type='text' name="name"></input>
<button style="background-color: slateblue; color: white"
type="submit">Login</button>
</form>
</div>
{% endblock %}
[Link]
from flask import Flask, redirect, url_for, render_template, request, session
from datetime import timedelta
app = Flask(__name__)
[Link]["SECRET_KEY"]= "thehung" #Khoa bao mat
app.permanent_session_lifetime = timedelta(minutes=1) #lifetime 1p
@[Link]('/')
def hello_wordl():
return render_template('[Link]')
@[Link]("/login", methods=["POST", "GET"])
def login():
if [Link] == "POST":
user_name = [Link]["name"]
[Link] = True
if user_name:
session["user"] = user_name
return redirect(url_for("hello_user", name=user_name))
if "user" in session:
name = session["user"]
return f"<h1> Hello {name}!</h1>"
return render_template("[Link]")
@[Link]('/user')
def hello_user():
if "user" in session:
name = session["user"]
return f"<h1> Hello {name}!</h1>"
else:
return redirect(url_for("login"))
@[Link]('/logout')
def log_out():
[Link]("user", None)
return redirect(url_for("login"))
if __name__=="__main__":
[Link](debug=True)
6. MESSAGE
@[Link]("/login", methods=["POST", "GET"])
def login():
if [Link] == "POST":
user_name = [Link]["name"]
[Link] = True
if user_name:
session["user"] = user_name
flash("You logged in successfully!", "info")
return render_template("[Link]", user=user_name)
if "user" in session:
name = session["user"]
flash("You have already logged in!", "info")
return render_template("[Link]", user=name)
return render_template("[Link]")
@[Link]('/user')
def hello_user():
if "user" in session:
name = session["user"]
return f"<h1> Hello {name}!</h1>"
else:
flash("You haven't logged in!", "info")
return redirect(url_for("login"))
@[Link]('/logout')
def log_out():
flash("You logged out!", "info")
[Link]("user", None)
return redirect(url_for("login"))
if __name__=="__main__":
[Link](debug=True)
#User
{% extends "[Link]" %}
{% block title %}Login Page{% endblock %}
{% block content %}
<h2>Hello {{user}}</h2>
{% with messages = get_flashed_messages() %}
{% if messages %}
{% for m in messages %}
<p>{{m}}</p>
{% endfor %}
{% endif %}
{% endwith %}
{% endblock %}
7. SQLAlchemy
from enum import EnumMeta
from flask import Flask, redirect, url_for, render_template, request, session
from datetime import timedelta
from [Link] import flash
from flask_sqlalchemy import SQLAlchemy
from os import path
app = Flask(__name__)
[Link]["SECRET_KEY"] = "thanhdz"
[Link]["SQLALCHEMY_DATABASE_URI"] = "sqlite:///[Link]"
[Link]["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
app.permanent_session_lifetime = timedelta(minutes=1)
db = SQLAlchemy(app)
class User([Link]):
user_id = [Link]([Link], primary_key=True)
name = [Link]([Link](100))
email = [Link]([Link](100))
def __init__(self, name, email):
[Link] = name
[Link] = email
@[Link]("/home")
@[Link]("/")
def home():
return render_template("[Link]")
@[Link]("/login", methods=["POST", "GET"])
def login():
if [Link] == "POST":
user_name = [Link]["name"]
[Link] = True
if user_name:
session["user"] = user_name
found_user = [Link].filter_by(name=user_name).first()
if found_user:
session["email"] = found_user.email
else:
user = User(user_name, "temp@[Link]")
[Link](user)
[Link]()
flash("Created in DB!")
return redirect(url_for("user", user=user_name))
if "user" in session:
name = session["user"]
return redirect(url_for("user", user=user_name))
return render_template("[Link]")
@[Link]("/user", methods=["POST", "GET"])
def user():
email = None
if "user" in session:
name = session["user"]
if [Link] == "POST":
if not [Link]["email"] and [Link]["name"]:
[Link].filter_by(name=name).delete()
[Link]()
flash("Deleted user!")
return redirect(url_for("log_out"))
else:
email = [Link]["email"]
session["email"] = email
found_user = [Link].filter_by(name=name).first()
found_user.email = email
[Link]()
flash("Email updated!")
elif "email" in session:
email = session["email"]
return render_template("[Link]", user=name, email=email)
else:
return redirect(url_for("login"))
@[Link]("/logout")
def log_out():
[Link]("user", None)
return redirect(url_for("login"))
if __name__ == "__main__":
if not [Link]("[Link]"):
db.create_all(app=app)
print("Created database!")
[Link](debug=True)
#User
{% extends "[Link]" %}
{% block title %}Login Page{% endblock %}
{% block content %}
<h2>Hello {{user}}</h2>
{% with messages = get_flashed_messages() %}
{% if messages %}
{% for m in messages %}
<p>{{m}}</p>
{% endfor %}
{% endif %}
{% endwith %}
<div style="margin-left: 50px;">
<form action="#" method="post">
<label for="email">Email</label>
<input type="email" name="email" placeholder="Enter email..."
value="{{email if email}}"></input>
<button style="background-color: slateblue; color: white;"
type="submit">Submit</button>
<input type="name" name="name" placeholder="Enter name..." value="{{user
if user}}"></input>
<button style="background-color: slateblue; color: white;"
type="submit">Delete</button>
</form>
</div>
{% endblock %}