Custom Form Validation Rules তৈরি করা

Flask এর Form Handling এবং Validation - ফ্লাস্ক (Flask) - Web Development

203

Flask-এ Custom Form Validation Rules তৈরি করা খুবই সহজ এবং এটি ব্যবহারকারীর ইনপুট যাচাই (validation) করার জন্য একটি গুরুত্বপূর্ণ ফিচার। Flask-WTF (Flask এর জন্য একটি ফর্ম এবং উইজেট লাইব্রেরি) ব্যবহার করে ফর্ম ভ্যালিডেশন করা যায় এবং আপনি কাস্টম ভ্যালিডেশন লজিক যোগ করতে পারেন। Flask-WTF ব্যবহার করে আপনি সহজেই ফর্মের ইনপুট যাচাই করতে পারবেন, এবং কখনও কখনও কাস্টম ভ্যালিডেশন রুলস তৈরি করার প্রয়োজন পড়ে।

Flask-WTF

Flask-WTF একটি ফর্ম হ্যান্ডলিং লাইব্রেরি যা WTForms এর উপর ভিত্তি করে তৈরি। এটি Flask অ্যাপ্লিকেশনে ফর্ম তৈরি এবং প্রক্রিয়া করার জন্য একটি সহজ এবং কার্যকর পদ্ধতি প্রদান করে।


Flask-WTF ইনস্টলেশন

প্রথমে Flask-WTF ইনস্টল করতে হবে:

pip install flask-wtf

কাস্টম ভ্যালিডেশন রুলস তৈরি করা

Flask-WTF ব্যবহার করে কাস্টম ফর্ম ভ্যালিডেশন রুল তৈরি করতে আপনি validators ব্যবহার করবেন। এখানে validate_<fieldname> নামে একটি মেথড তৈরি করে কাস্টম ভ্যালিডেশন রুল তৈরি করা হয়।

উদাহরণ: Custom Form Validation in Flask

  1. Flask অ্যাপ্লিকেশন সেটআপ করা
from flask import Flask, render_template, redirect, url_for
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired, Length, ValidationError

app = Flask(__name__)
app.config['SECRET_KEY'] = 'your_secret_key'

# Custom validator function
def validate_username(form, field):
    if field.data == "admin":
        raise ValidationError("Username 'admin' is not allowed.")

class UserForm(FlaskForm):
    username = StringField('Username', validators=[DataRequired(), Length(min=4, max=25), validate_username])
    submit = SubmitField('Submit')

@app.route("/", methods=["GET", "POST"])
def home():
    form = UserForm()
    if form.validate_on_submit():
        return redirect(url_for('success'))
    return render_template('index.html', form=form)

@app.route("/success")
def success():
    return "Form submitted successfully!"

if __name__ == "__main__":
    app.run(debug=True)

ব্যাখ্যা:

  1. UserForm ক্লাসে কাস্টম ভ্যালিডেশন:
    • এখানে, validate_username মেথডটি কাস্টম ভ্যালিডেশন রুল হিসেবে তৈরি করা হয়েছে। এটি ইনপুটের সাথে যাচাই করে যে, "admin" ব্যবহারকারীর নাম গ্রহণযোগ্য নয়। যদি ইনপুটে "admin" থাকে, তবে এটি একটি ত্রুটি (error) দেখাবে।
  2. validators=[DataRequired(), Length(min=4, max=25), validate_username]:
    • DataRequired(): এটি নিশ্চিত করে যে ফিল্ডটি খালি থাকবে না।
    • Length(min=4, max=25): এটি ফিল্ডের জন্য মিনিমাম এবং ম্যাক্সিমাম দৈর্ঘ্য নির্ধারণ করে।
    • validate_username: এটি কাস্টম ভ্যালিডেশন ফাংশন যা আগে ব্যাখ্যা করা হয়েছে।
  3. validate_on_submit():
    • এই মেথডটি ফর্মটি সাবমিট হলে, ফর্মের সমস্ত ভ্যালিডেশন পরীক্ষা করে। যদি সব ভ্যালিডেশন পাস হয়, তবে এটি True রিটার্ন করবে এবং আমরা সফল পৃষ্ঠাতে রিডাইরেক্ট করব।

২. কাস্টম ভ্যালিডেশন রুলের জন্য error message কাস্টমাইজেশন

Flask-WTF এ আপনি কাস্টম ভ্যালিডেশন রুল তৈরি করার পাশাপাশি, কাস্টম ত্রুটি বার্তা (error message) সরবরাহ করতে পারেন।

উদাহরণ:

def validate_username(form, field):
    if field.data == "admin":
        raise ValidationError("Username 'admin' is not allowed. Please choose a different username.")

এখানে:

  • ValidationError: এই ক্লাসটি ত্রুটি বার্তা ফেলে দেয় যখন কাস্টম ভ্যালিডেশন ব্যর্থ হয়। আপনি আপনার বার্তা কাস্টমাইজ করতে পারেন যেমন "Username 'admin' is not allowed. Please choose a different username."

৩. ফর্ম রেন্ডারিং এবং ত্রুটি বার্তা দেখানো

index.html ফাইলটি তৈরি করুন এবং ফর্মের ত্রুটি বার্তা দেখানোর জন্য এই কোড ব্যবহার করুন:

index.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>Submit a username</h1>
    <form method="POST">
        {{ form.hidden_tag() }}
        <div>
            <label for="username">Username:</label>
            {{ form.username(size=32) }}
            {% if form.username.errors %}
                <ul>
                    {% for error in form.username.errors %}
                        <li style="color: red;">{{ error }}</li>
                    {% endfor %}
                </ul>
            {% endif %}
        </div>
        <div>
            {{ form.submit() }}
        </div>
    </form>
</body>
</html>

এখানে:

  • {{ form.username.errors }}: এটি ফর্মের ত্রুটিগুলি দেখানোর জন্য ব্যবহৃত হয়। যদি কোনও ত্রুটি থাকে, তবে তা লাল রঙে প্রদর্শিত হবে।

৪. ভিন্ন ধরনের কাস্টম ভ্যালিডেশন রুলস

আপনি আরও বিভিন্ন ধরনের কাস্টম ভ্যালিডেশন রুল তৈরি করতে পারেন, যেমন:

  1. ইমেইল যাচাই: নিশ্চিত করুন যে ফিল্ডে একটি বৈধ ইমেইল ঠিকানা রয়েছে।
  2. অন্যান্য কাস্টম রুলস: যেমন, একটি ফিল্ডের মান অন্য ফিল্ডের মানের সঙ্গে মেলানো, অথবা কিছু নির্দিষ্ট শর্তের উপর ভিত্তি করে ভ্যালিডেশন।

উদাহরণ: কাস্টম ইমেইল ভ্যালিডেশন

from wtforms.validators import Email

def validate_email(form, field):
    if not field.data.endswith('@example.com'):
        raise ValidationError("Email must be from 'example.com' domain.")

এটি ইমেইল ভ্যালিডেশন করবে এবং কেবলমাত্র "example.com" ডোমেইন থেকে ইমেইল গ্রহণ করবে।


Flask-WTF এবং Custom Form Validation ব্যবহারের মাধ্যমে আপনি আপনার ফর্ম ইনপুট যাচাই করতে পারবেন এবং কাস্টম রুল তৈরি করতে পারবেন। এটি ব্যবহারকারীর ইনপুট সঠিকভাবে যাচাই করতে সাহায্য করে, এবং নিরাপত্তা, ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে সহায়ক। Flask-এ কাস্টম ভ্যালিডেশন রুলস আপনাকে ফর্মের সাথে ইন্টারঅ্যাকশন সহজ এবং কার্যকরভাবে পরিচালনা করার সুবিধা দেয়।

Content added By
Promotion

Are you sure to start over?

Loading...