در Flask شما میتوانید HTML را به دو روش برگردانید:
- HTML مستقیم در کد: میتوانید محتوای HTML را به صورت رشتهای در تابع مسیر بازگردانید.
- HTML از فایل قالب: با استفاده از فایلهای HTML در پوشه
templatesو تابعrender_template، میتوانید صفحات HTML داینامیک بسازید و بازگردانید.
چگونه پوشه templates را مشخص کنیم
به صورت پیشفرض Flask پوشهای به نام templates در کنار فایل اصلی پروژه شما (app.py) جستجو میکند. اگر میخواهید مسیر دیگری برای قالبها مشخص کنید، هنگام ایجاد اپلیکیشن میتوانید از آرگومان template_folder استفاده کنید:
from flask import Flask
# مشخص کردن پوشه قالب
app = Flask(__name__, template_folder="my_templates")
بازگرداندن یک صفحه ساده از فایل قالب
پس از مشخص کردن پوشه قالب، میتوانید یک فایل HTML ساده ایجاد کرده و آن را بازگردانید:
project/
├── app.py
└── templates/
└── index.html
<!-- templates/index.html -->
<!DOCTYPE html>
<html lang="fa">
<head>
<meta charset="UTF-8">
<title>Home</title>
</head>
<body>
<h1>سلام Flask!</h1>
</body>
</html>
from flask import Flask, render_template
app = Flask(__name__)
@app.route("/")
def home():
return render_template("index.html")
در این حالت با باز کردن مسیر / در مرورگر، محتوای فایل index.html رندر شده و نمایش داده میشود.
بازگشت پاسخ بدون فایل (متن ساده یا HTML inline)
@app.route("/")
def html_inline():
return "<h1>Hello HTML Inline</h1>"
مزیت استفاده از فایل قالب نسبت به HTML مستقیم این است که میتوانید دادهها را داینامیک کنید، بلوکها و inheritance داشته باشید و ساختار پروژه شما تمیزتر و قابل نگهداریتر باشد.