فرم ها در جنگو جنگو
03 Khordad 1402
0 نظر
72 : 3
فرم ها در جنگو

فرم ها در جنگو چه کاربردی دارند و به چه روش هایی ایجا می شوند.

در روت هر اپلیکیشن پروژه جنگویی میتونید یک فایل با نام forms.py ایجاد کنید تا برای اعتبار سنجی اطلاعات، ساخت ویو راحت و سریع، و هندل کردن درخواست ازش بهره بگیرید.

 

برای این ابتدا کافیه یک فایل با نام forms.py در روت اپلیکیشن مورد نظر ایجا کنید.

class LoginForm(forms.Form):
    user_name = forms.CharField(
        widget=forms.TextInput(attrs={'placeholder': 'لطفا نام کاربری خود را وارد نمایید'}),
        label='نام کاربری'
    )

    password = forms.CharField(
        widget=forms.PasswordInput(attrs={'placeholder': 'لطفا کلمه عبور خود را وارد نمایید'}),
        label='کلمه ی عبور'
    )

در بالا ما یک فرم که از forms.Form ارث بری می کند ساختیم.

برای استفاده از فرم ها فقط به دو مرحله تغییر نیاز داریم

1-در فایل views.py اگر از ClassBaseView (که تو مقاله بعدی در موردش آموزش میدم) استفاده میکنید فیلد form_class را برابر با نام کلاس فرمی که ساختید قرار بدید مثل مثال ذیل

form_class = AccountLogin

و اگر از فانکشن ها استفاده میکنید با یک نام دلخوام (ترجیحا با کلمه form) خاتمه یابد یک متغیر ایجاد کرده و به شکل ذیل برابر با نام کلاس فرم خود قرار دهید.

login_form = AccountLogin(request.POST or None)
2- به لایه ویو (html) خود رفته و نامی متغیر را با شکل ذیل قرار دهید.

در صورت استفاده از فانکشن


    <form action="{% url 'accounts:login' %}" method="post" class="w-50 bg-light p-5 justify-content-center align-items-center">
        {% csrf_token %}


{{ login_form }}
  
   


           <br>
            <button class="btn btn-primary mt-3 w-100 " type="submit">ورود</button>
       </form>

درصورت استفاده از ClassBaseView ها


    <form action="{% url 'accounts:login' %}" method="post" class="w-50 bg-light p-5 justify-content-center align-items-center">
        {% csrf_token %}


{{ form }}
  
   


           <br>
            <button class="btn btn-primary mt-3 w-100 " type="submit">ورود</button>
       </form>

 

 

ارث بری در فرم های جنگو

برای ساخت فرم ها در جنگو میتونیم از دو کلاس Form و یا کلاس ModelForm ارث بری کنیم.

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

 

فیلدر های فرم در جنگو

در جنگو فیلد های زیادی برای فرم ها وجود داره که به توضیح چند مورد از اون ها میپردازیم:

  1. model
  2. fields
  3. widgets
  4. error_messages


این پست هنوز کامل نشده!

چند قدم در چند راه

ابتدا وارد شوید یا ثبت نام کنید!

برای ثبت نظر، نقد ابتدا باید وارد شوید یا ثبت نام کنید.
سبد خرید