Flask অ্যাপ্লিকেশনে HTML Form Data প্রোসেস করার জন্য সাধারণত GET এবং POST HTTP মেথড ব্যবহার করা হয়। ফর্মের মাধ্যমে ব্যবহারকারী ইনপুট প্রদান করে এবং Flask সেটি গ্রহণ করে প্রক্রিয়া করে। আপনি ফর্ম ডেটা প্রোসেস করতে Flask এর request অবজেক্ট ব্যবহার করতে পারেন।
এখানে দেখানো হবে কিভাবে HTML ফর্ম তৈরি করা যায় এবং ফর্ম ডেটা Flask অ্যাপ্লিকেশনে প্রোসেস করা যায়।
১. HTML Form তৈরি করা
প্রথমে একটি HTML ফর্ম তৈরি করা হবে, যেখানে ব্যবহারকারী কিছু ডেটা ইনপুট করতে পারবেন।
উদাহরণ: form.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Flask Form</title>
</head>
<body>
<h1>ফর্মে ডেটা ইনপুট করুন</h1>
<form action="/submit" method="POST">
<label for="name">নাম:</label>
<input type="text" id="name" name="name"><br><br>
<label for="email">ইমেইল:</label>
<input type="email" id="email" name="email"><br><br>
<input type="submit" value="সাবমিট">
</form>
</body>
</html>
এখানে:
action="/submit": ফর্মটি সাবমিট করার পর/submitরাউটে যাবে।method="POST": ফর্মটি POST মেথডে সাবমিট হবে।
২. Flask অ্যাপ্লিকেশন তৈরি করা
এখন Flask অ্যাপ তৈরি করবো যেখানে ফর্ম ডেটা প্রোসেস করা হবে।
উদাহরণ: app.py
from flask import Flask, request, render_template
app = Flask(__name__)
@app.route('/')
def home():
return render_template('form.html') # HTML ফর্মের পেজ দেখাবে
@app.route('/submit', methods=['POST'])
def submit():
if request.method == 'POST':
# ফর্ম ডেটা গ্রহণ করা
name = request.form['name']
email = request.form['email']
# ডেটা প্রিন্ট করা (আপনি ডেটা প্রোসেস বা ডাটাবেসে সেভ করতে পারেন)
return f"নাম: {name}, ইমেইল: {email}"
if __name__ == '__main__':
app.run(debug=True)
এখানে:
@app.route('/'): এটি হোম পেজের রাউট, যেখানে ফর্মটি উপস্থিত থাকবে।@app.route('/submit', methods=['POST']): এটি ফর্ম সাবমিট হওয়ার পর/submitরাউটটি হ্যান্ডেল করবে। এখানে POST মেথড ব্যবহার করা হয়েছে।request.form['name']:request.formব্যবহার করে ফর্ম ডেটা অ্যাক্সেস করা হয়।
৩. ফর্ম সাবমিট করা এবং ডেটা প্রদর্শন করা
এখন, ফর্মটি ব্যবহারকারী জমা দিলে /submit রাউটটি ডেটা গ্রহণ করে এবং সেই ডেটা প্রদর্শন করবে।
উদাহরণ:
যখন আপনি হোম পেজে গিয়ে ফর্ম পূর্ণ করে সাবমিট করবেন, তখন নাম এবং ইমেইল ডেটা প্রিন্ট হবে:
নাম: জন, ইমেইল: john@example.com
৪. HTML ফর্মে Validation (ভ্যালিডেশন)
HTML ফর্মের ইনপুট ভ্যালিডেশন খুবই গুরুত্বপূর্ণ। Flask-এ আপনি ফর্ম ইনপুট যাচাই করতে পারেন। উদাহরণস্বরূপ, ইনপুট না দিলে একটি ত্রুটি বার্তা প্রদর্শন করা যায়।
উদাহরণ: ফর্ম ভ্যালিডেশন
@app.route('/submit', methods=['POST'])
def submit():
if request.method == 'POST':
# ফর্ম ডেটা গ্রহণ
name = request.form['name']
email = request.form['email']
# ইনপুট ভ্যালিডেশন
if not name or not email:
return "নাম বা ইমেইল ফিল্ড ফাঁকা রাখা যাবে না!", 400 # 400 Bad Request
return f"নাম: {name}, ইমেইল: {email}"
এখানে:
if not name or not email:: যদি ইনপুট ফিল্ডে কিছু না দেওয়া থাকে, তবে একটি ত্রুটি বার্তা প্রদর্শিত হবে।
৫. Flask WTForms ব্যবহার করা
Flask অ্যাপ্লিকেশনে ফর্ম ব্যবস্থাপনার জন্য Flask-WTF লাইব্রেরি ব্যবহার করা যেতে পারে, যা ফর্ম ভ্যালিডেশন এবং সুরক্ষা ফিচার সরবরাহ করে।
Flask-WTF সেটআপ:
Flask-WTF ইনস্টল করুন:
pip install flask-wtf- ফর্ম তৈরি করুন:
from flask import Flask, render_template, redirect, url_for
from flask_wtf import FlaskForm
from wtforms import StringField, EmailField
from wtforms.validators import DataRequired, Email
app = Flask(__name__)
app.config['SECRET_KEY'] = 'your_secret_key'
class ContactForm(FlaskForm):
name = StringField('নাম', validators=[DataRequired()])
email = EmailField('ইমেইল', validators=[DataRequired(), Email()])
@app.route('/', methods=['GET', 'POST'])
def home():
form = ContactForm()
if form.validate_on_submit():
name = form.name.data
email = form.email.data
return f"নাম: {name}, ইমেইল: {email}"
return render_template('form.html', form=form)
if __name__ == "__main__":
app.run(debug=True)
form.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>WTForms Example</title>
</head>
<body>
<h1>ফর্মে ডেটা ইনপুট করুন</h1>
<form method="POST">
{{ form.hidden_tag() }}
<label for="name">নাম:</label>
{{ form.name(size=20) }}<br><br>
<label for="email">ইমেইল:</label>
{{ form.email(size=20) }}<br><br>
<input type="submit" value="সাবমিট">
</form>
</body>
</html>
এখানে:
- FlaskForm এবং WTForms ব্যবহার করা হয়েছে ফর্মের ইনপুট ভ্যালিডেশন ও নিরাপত্তা নিশ্চিত করতে।
Flask-এ HTML Form Data প্রোসেস করা একটি সহজ প্রক্রিয়া, এবং request.form ব্যবহার করে ফর্ম ডেটা সহজে এক্সেস করা যায়। ফর্ম ইনপুট ভ্যালিডেশন এবং নিরাপত্তা নিশ্চিত করার জন্য Flask-WTF ব্যবহার করা যেতে পারে, যা আরও শক্তিশালী এবং নিরাপদ ফর্ম প্রোসেসিং সরবরাহ করে। Flask অ্যাপ্লিকেশনকে ডাইনামিক এবং ইউজার-ইন্টারঅ্যাকটিভ তৈরি করতে ফর্ম ডেটা প্রোসেসিং অপরিহার্য।
Read more