چگونه پیام خطای فیلدهای ضروری و خالی در فرمهای Django را تغییر دهیم
دوشنبه, ۲۶ آذر ۱۴۰۳، ۰۳:۱۴ ب.ظ
بطور عادی وقتی یک فیلد در فرمهای django ضروری باشد و کاربر آن را پر نکند با این پیام مواجه می شود: Please fill out this field یا اگر یک گزینه چند انتخابی باشد: Please select an item in the list
این پیامها در واقع ساخته HTML5 هستند و ارتباطی به django ندارند. برای اینکه به جای این پیامها در سراسر پروژه یک پیام فارسی نشان دهید دو کار باید انجام شود:
1- یک کلاس پایه بنویسید که پیام خطا را تنظیم کند و به جای ModelForm یا Form از آن ارث بری کنید: (واضح است که این تکه کد باید به جای ModelForm استفاده شود. به جای Form باید کلاس مشابه جداگانه ای نوشت )
class CustomBaseModelForm(forms.ModelForm): default_error_messages = { 'required': 'پر کردن این قسمت ضروری است.', } def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) for field in self.fields.values(): field.error_messages.update(self.default_error_messages)
2- اعتبارسنجی HTML5 را در فرمها غیرفعال کنید. برای این کار باید کلمه novalidate را در اول فرم اضافه کنید:
<form novalidate>
...
</form>