0% found this document useful (0 votes)
11 views13 pages

Flask Web App: HTML, Sessions, SQLAlchemy

Uploaded by

dinhthien914
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
11 views13 pages

Flask Web App: HTML, Sessions, SQLAlchemy

Uploaded by

dinhthien914
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

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 %}

You might also like