ตัวตรวจสอบแบบกำหนดเองและข้อผิดพลาดของฟิลด์
เขียนกฎและแสดงข้อความแก่ผู้ใช้
ตัวตรวจสอบแบบกำหนดเองและข้อผิดพลาดของฟิลด์ เป็นบทเรียน Flask Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Flask Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Flask Academy มีบทเรียนทั้งหมด 4 บทเรียน
บางส่วนของบทเรียนนี้ยังไม่ได้รับการแปล และแสดงเป็นภาษาอังกฤษ
Beyond Built-Ins
Built-in validators cover the basics, but real apps have unique rules. Now you will write custom validators and surface clear errors. ✍️
Recall the Standard Set
You already know DataRequired, Length, and Email. Custom rules layer on top of these for logic the library cannot guess.
from wtforms.validators import DataRequired, Length, EmailInline with validators
A custom validator is just a function in the field's validators list. It receives the form and the field on every check.
def not_admin(form, field):
pass
name = StringField('Name', validators=[not_admin])Raise ValidationError
To reject a value, raise ValidationError with a message. WTForms catches it and attaches the text to that field.
from wtforms.validators import ValidationError
def not_admin(form, field):
if field.data == 'admin':
raise ValidationError('Name is reserved.')The validate_ Convention
For a one-field rule, add a method named validate_fieldname on the form class. WTForms calls it automatically.
class SignupForm(FlaskForm):
username = StringField('Username')
def validate_username(self, field):
if len(field.data) < 3:
raise ValidationError('Too short.')Validate Against the Database
These methods can run any code, so check the database to reject a username that is already taken.
def validate_email(self, field):
if User.query.filter_by(email=field.data).first():
raise ValidationError('Email already used.')Errors Land on the Field
Each failed message goes into field.errors, a simple list. An empty list means that field passed cleanly.
form.username.errors # ['Too short.']Show Errors in the Template
Loop over a field's errors in Jinja to display them. Users see exactly what to fix right beside the input.
{% for error in form.username.errors %}
<span class="err">{{ error }}</span>
{% endfor %}All Errors at Once
For a summary, use form.errors. It maps every field name to its list of messages after validation runs.
form.errors # {'username': ['Too short.']}Reusable Validator Classes
For rules you reuse, write a class with a __call__ method. Configure it once, then drop it into many fields.
class NoSpaces:
def __call__(self, form, field):
if ' ' in field.data:
raise ValidationError('No spaces allowed.')Keep Messages Helpful
Good error messages tell the user how to fix the problem, not just that something is wrong. Clarity builds trust.
Quick Check
How do you reject a value inside a custom validator function?
Recap
You added rules inline, via validate_fieldname methods, and reusable classes, raising ValidationError and showing messages from field.errors. 🌟
คำถามที่พบบ่อย
บทเรียน “ตัวตรวจสอบแบบกำหนดเองและข้อผิดพลาดของฟิลด์” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ตัวตรวจสอบแบบกำหนดเองและข้อผิดพลาดของฟิลด์” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Flask Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Flask Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ตัวตรวจสอบแบบกำหนดเองและข้อผิดพลาดของฟิลด์”
เขียนกฎและแสดงข้อความแก่ผู้ใช้ คุณปฏิบัติ Flask Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Flask Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Flask Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “ตัวตรวจสอบแบบกำหนดเองและข้อผิดพลาดของฟิลด์” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Flask Academy นี้ได้ไหม
ได้ บทเรียน Flask Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- กำหนดคลาส FlaskForm
- เรนเดอร์และส่งแบบฟอร์ม
- validate_on_submit และโทเคน CSRF
- ตัวตรวจสอบแบบกำหนดเองและข้อผิดพลาดของฟิลด์