خاطرات فنی من

یادداشتهایی در مورد تجربیات فنی من به عنوان یک مهندس نرم افزار برای مراجعه بعدی خودم و احتمالا دیگران.

سعی می کنم مطالب برای دیگران هم قابل استفاده باشند اما به دلیل کمی وقت نمی توانم زیاد نگران نگارش و چینش متن باشم

بطور عادی وقتی یک فیلد در فرمهای 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>
موافقین ۰ مخالفین ۰ ۰۳/۰۹/۲۶
محسن

HTML5

django

form

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی