กรอบขวด

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 จึงเหมาะสำหรับการใช้งานที่มีขนาดเล็กและมีความซับซ้อนน้อยกว่า