กรอบขวด
Flask เป็นไมโครเฟรมเวิร์กซึ่งมีการพึ่งพาไลบรารีภายนอกน้อยมาก เป็นกรอบที่เบามากและทำให้เรามีอิสระในการทำสิ่งที่ต้องการ
ในบทนี้เราจะสร้างโครงการโดยใช้กรอบ Python และ Flask
การเริ่มต้นและการกำหนดค่าขวด
เช่นเดียวกับไลบรารี python ที่ใช้กันอย่างแพร่หลายแพ็คเกจ Flask สามารถติดตั้งได้จาก Python Package Index (PPI) มาสร้างไดเร็กทอรีก่อน (ในบทนี้เราได้สร้างไดเร็กทอรีชื่อflaskProject) จากนั้นสร้างสภาพแวดล้อมเสมือน (และเรียกมันว่า flaskEnv) ซึ่งจะโหลดการอ้างอิงที่เกี่ยวข้องกับโครงการทั้งหมด (รวมถึงขวด) คุณยังสามารถติดตั้ง flask-sqlalchemy เพื่อให้แอปพลิเคชัน flask ของคุณมีวิธีง่ายๆในการสื่อสารกับฐานข้อมูล SQL
หลังจากติดตั้งกระติกน้ำแล้ว flaskEnv ของคุณ (ชื่อ virtualEnvironment) จะแสดงสิ่งต่างๆดังต่อไปนี้ -
การสร้างแอปด้วยขวด
ด้วยการติดตั้งกระติกน้ำทำให้เราสามารถสร้าง“hello application in flask” โดยมีโค้ดไม่กี่บรรทัดดังนี้ -
พิมพ์สิ่งต่อไปนี้ในเทอร์มินัล -
$python flaskapp.py
และคุณสามารถดูผลลัพธ์ต่อไปนี้ -
กำลังทำงานอยู่ http://127.0.0.1:5000/ หรือบน localhost:5000
ด้านล่างนี้คือคำอธิบายสิ่งที่เราทำในโค้ดตัวอย่างของเรา -
ประการแรกเรานำเข้าไลบรารีคลาส Flask อินสแตนซ์จากคลาสนี้คือแอป WSGI
ประการที่สองเราสร้างอินสแตนซ์ของคลาสนี้ แพ็คเกจแอปพลิเคชันหรือชื่อโมดูลเป็นอาร์กิวเมนต์แรกของเรา จำเป็นต้องมีขวดต้องรู้ว่าจะหาไฟล์แบบคงที่เทมเพลตและไฟล์อื่น ๆ ได้ที่ไหน
ถัดไปคือมัณฑนากร route () ที่เราใช้เพื่อทราบว่า URL ใดควรเรียกใช้เมธอด / ฟังก์ชันของเรา
การสร้างการกำหนดเส้นทาง URL
การกำหนดเส้นทาง URL ทำให้ URL ในเว็บแอปของคุณจำได้ง่าย ตอนนี้เราจะสร้างเส้นทาง URL -
/hello
/members
/members/name
เราสามารถเขียนโค้ดต่อไปนี้ตาม URL ด้านบนและบันทึกเป็น app.py
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
return "Index!"
@app.route('/Hello')
def hello():
return "Hello, World!"
@app.route("/members")
def members():
return "Members"
@app.route("/members/<name>/")
def getMember(name):
return name
if __name__ == '__main__':
app.run(debug=True)
ในการรีสตาร์ทแอปพลิเคชันเราใช้บรรทัดด้านล่างของโค้ดเพื่อรับผลลัพธ์ที่แตกต่างกันใน URL ต่างๆ -
$ python app.py
Running on http://localhost:5000/
เราจะได้ผลลัพธ์ต่อไปนี้ในเบราว์เซอร์ของเรา -
เราสามารถลองใช้ URL อื่น ๆ ในเบราว์เซอร์ของเราได้ดังนี้ -
Running on http://localhost:5000/hello, will give the following output −
Running on http://localhost:5000/members, will give −
Running on http://localhost:5000/members/TutorialsPoint/, will give you the following output −
แต่โดยปกติเราไม่ต้องการส่งคืนสตริง (ตามด้านบน) เราจะส่งคืนเทมเพลต เพื่อที่เราต้องการใช้ฟังก์ชัน“render_template” จากขวดและส่งคืน render_template พร้อมอินพุตบางส่วน ดังนั้นฟังก์ชันด้านล่างจะทำงานของเรา -
from flask import render_template
return render_template(‘home.html’)
ให้เราสร้างเทมเพลตโฟลเดอร์และวางไฟล์ home.html ไว้ในนั้น
ต่อไปเราจะพูดถึงการจัดวาง แทนที่จะใช้แท็กหัว html และแท็กเนื้อหาสำหรับทุกเทมเพลตเราจะออกแบบเค้าโครงให้รวมแท็ก head & body และรวมมุมมองปัจจุบันหรือเทมเพลตปัจจุบัน ด้วยเหตุนี้เราจึงต้องสร้างไฟล์แยกต่างหากและเรียกมันว่าlayout.html. ในการนี้เราสามารถใส่ head tag, body tag และแท็กอื่น ๆ ที่จำเป็นทั้งหมดได้
เราสามารถสร้าง layout.html ใหม่ของเราด้วยโค้ดบรรทัดต่อไปนี้ -
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>MyFlaskApp</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
</head>
<body>
{% include 'includes/_navbar.html' %}
<div class="container">
{% block body %}
{% endblock %}
</div>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js">
</script>
</body>
</html>
ในโค้ดด้านบนเราได้กำหนดชื่อแทร็ก MyFlaskAp ใช้ css cdn ในส่วนหัวและ javascript ใน body block เพื่อเปิดใช้งาน bootstrap
ตอนนี้เราต้องสร้าง navbar สำหรับทุกหน้า สำหรับสิ่งนั้นเราต้องสร้างโฟลเดอร์รวมก่อนจากนั้นสร้างไฟล์ _navbar.html ภายใน ตอนนี้ใน _navbar.html เราต้องใช้เทมเพลตเริ่มต้นมาตรฐานจาก getbootstrap.com ไฟล์ _navbar.html ที่สร้างขึ้นใหม่จะเป็นดังนี้ -
และรวมไฟล์ _navbar.html นี้ไว้ในไฟล์ layout.html ของเรา
{% include 'includes/_navbar.html' %}
เมื่อเรามีบล็อกเค้าโครงเราสามารถขยายบล็อกนี้ในไฟล์บ้านของเรา (home.html)
ไฟล์ home.html ของเราสามารถสร้างได้โดยใช้รหัสด้านล่าง -
{% extends 'layout.html' %}
{% block body %}
<div class="jumbotron text-center">
<h1>Welcome to FlaskApp</h1>
<p>This application is built on Flask webframework!</p>
</div>
{% endblock %}
ใช้สิ่งนี้หากเราพยายามเรียกใช้ไฟล์ flaskapp.py ของเราเราจะเห็นผลลัพธ์ด้านล่างในเบราว์เซอร์ของเรา -
ตอนนี้เราต้องการเปิดใช้งาน (ขณะนี้แท็บไม่ทำงาน) ของเรา aboutแท็บ สร้างเส้นทางสำหรับแท็บ about และสร้างไฟล์เทมเพลตabout.html.
เกี่ยวกับ tab route ใน appflask.py จะเป็นดังรูปด้านล่าง -
ไฟล์ about.html จะมีเนื้อหาด้านล่าง -
ดังนั้น Home and About จึงได้รับการดูแล สำหรับ Articles เราสามารถสร้างไฟล์ใหม่ (data.py) ในไดเร็กทอรีรากซึ่งเราใส่ข้อมูลและเรียกมันในหน้าเว็บของเรา
data.py
def Articles():
articles = [
{
'uid': 1,
'title': 'Article_One',
'body': 'Flask, being a microframework, often requires some repetitive step
to get a third party library working. Because very often these steps could
be abstracted to support multiple projects the Flask Extension Registry
was created.',
'Author': 'Rajesh Joshi',
'Created-on': '07-09-2018'
},
{
'uid': 2,
'title': 'Article_Two',
'body': "Flask, being a microframework, often requires some repetitive steps
to get a third party library working. Because very often these steps could
be abstracted to support multiple projects the Flask Extension Registry
was created.",
'Author': 'Rajesh J',
'Created-on': '07-09-2018'
},
{
'uid': 3,
'title': 'Article_Three',
'body': 'Flask, being a microframework, often requires some repetitive steps
to get a third party library working. Because very often these steps could be
abstracted to support multiple projects the Flask Extension Registry
was created.',
'Author': 'Joshi Rajesh',
'Created-on': '07-09-2018'
}
]
return articles
ด้านล่างนี้คือรหัสสำหรับ articles.htmlซึ่งจะแสดงชื่อบทความสำหรับแต่ละ uid
{% extends 'layout.html' %}
{% block body %}
<h1>Articles</h1>
{% for article in articles %}
<li class="list-group-item">
<a href="article/{{article.uid}}"> {{article.title}}</a>
</li>
{% endfor %}
{% endblock %}
สรุปได้ว่า Flask เป็นหนึ่งในเว็บเฟรมเวิร์กที่ได้รับความนิยมมากที่สุดเนื่องจากมีน้ำหนักเบา แม้ว่าจะเป็นขนาดเล็ก แต่ก็เป็นเฟรมเวิร์กเว็บหลามที่ขยายได้ ด้วยการให้ฟังก์ชันที่จำเป็นขวดช่วยเร่งการพัฒนาเว็บแอปพลิเคชันที่เรียบง่าย ดังนั้น Flask จึงเหมาะสำหรับการใช้งานที่มีขนาดเล็กและมีความซับซ้อนน้อยกว่า