با استفاده از این کتابخانه جنگو، فرمهای با ویژگیهای کامل را با تأیید داخلی ایجاد کنید.
بهترین راه برای تسلط بر جنگو استفاده از آن برای توسعه برنامه های فول استک است. هنگام کار با فریم ورک با بسیاری از ویژگی های جذاب روبرو خواهید شد. یکی از آنها نحوه رندر کردن فرم ها در قالب ها با استفاده از فرم های ترد است.
استفاده از django-crispy-forms یکی از راه هایی است که می توانید فرم ها را در جنگو رندر کنید. وابستگی به شما امکان می دهد بدون نوشتن کد HTML فرم ها را در قالب ها ایجاد کنید. شما به راحتی می توانید طرح بندی های قابل استفاده مجدد را بدون دردسر نوشتن کد فرم بسازید.
شما می توانید با نصب کتابخانه، سپس پیکربندی آن و استفاده از آن برای ایجاد فرم ثبت نام، اطلاعات بیشتری کسب کنید.
چگونه django-crispy-forms کار می کند
کتابخانه django-crispy-forms دارای کد HTML داخلی است که می توانید آن را مطابق با نیاز خود سفارشی کنید. این شامل فیلتری به نام | crispy است که فرمهای مبتنی بر div را در قالب ارائه میکند.
تگهای {% crispy %} فرمها را مطابق با تنظیمات خاصی ارائه میکنند. django-crispy-forms به خوبی با وابستگی های قالب دیگر مانند Bootstrap و Tailwind CSS کار می کند.
بیایید ببینیم که چگونه در یک الگو کار می کند.
Crispy Forms را نصب کنید
با ایجاد یک پروژه و برنامه جنگو شروع کنید. سپس آخرین نسخه django-crispy-forms را با استفاده از Pipenv با دستور زیر نصب کنید:
pipenv install django-crispy-forms
یک نصب موفق مانند تصویر زیر خواهد بود:
django-crispy-forms را در تنظیمات پیکربندی کنید
پس از نصب، باید فرم های ترد را به عنوان یک وابستگی در تنظیمات پروژه ثبت کنید. با ثبت آن، کتابخانه فرم های ترد برای همه اپلیکیشن های پروژه در دسترس خواهد بود.
در فایل settings.py، رشته «crispy_forms» را اضافه کنید:
INSTALLED_APPS = [\n 'django.contrib.admin',\n 'django.contrib.auth',\n 'django.contrib.contenttypes',\n 'django.contrib.sessions',\n 'django.contrib.messages',\n 'django.contrib.staticfiles',\n 'myapp',\n 'crispy_forms',\n]
یک فرم ایجاد کنید
برای کمک به احراز هویت، باید فرم ثبت نام خود را با فرم داخلی ایجاد کاربر جنگو همگام کنید.
سیستم احراز هویت داخلی جنگو نیازهای رایجی مانند اعتبارسنجی رمز عبور و صدور مجوزها را انجام می دهد.
این سیستم همچنین اعتبار فرم را برای شما مدیریت می کند. بنابراین میتوانید فرمهایی را بدون دردسر مدیریت اعتبارسنجی خودتان ایجاد کنید. اگر اعتبار سنجی فرم را در چارچوب های دیگر انجام داده باشید، می دانید که چقدر می تواند دست و پا گیر باشد. نه با جنگو.
ماژول احراز هویت یک مدل یا شیء کاربر دارد. شی User جزء اصلی سیستم احراز هویت کاربر است. مجوزها، احراز هویت پروفایل کاربران ثبت نام شده، کنترل دسترسی و موارد دیگر را کنترل می کند.
UserCreationForm از شی کاربر داخلی برای ثبت کاربران جدید استفاده می کند. از کلاس ModelForm ارث می برد.
ابتدا فرم ها را از ماژول فرم جنگو وارد کنید. سپس UserCreationForm را از django.contrib.auth.forms وارد کنید. همچنین، مدل کاربر داخلی را از django.contrib.auth.models وارد کنید. سپس ورودی های فیلد را از django ModelForm وارد کنید.
from django import forms\nfrom django.contrib.auth.forms import UserCreationForm\nfrom django.contrib.auth.models import User\nfrom django.forms import ModelForm, TextInput, EmailInput,ImageField, Textarea
سپس یک شی ثبت نام با نام RegisterUserForm ایجاد کنید. UserCreationForm را به عنوان آرگومان می گیرد. فیلدهای شیء کاربر مانند احراز هویت ایمیل، نام کاربری و دو رمز عبور را اضافه کنید.
class RegisterUserForm(UserCreationForm):\n email = forms.EmailField(max_length=254, help_text='Required. Enter a valid email address.')\n class Meta:\n model = User\n fields = ('username', 'email', 'password1', 'password2')
این فیلدها ویژگی های اصلی یک کاربر در فرم ثبت نام هستند. آنها ورودی های اجباری هستند که کاربران باید آنها را پر کنند تا سیستم آنها را احراز هویت کند.
یک عملکرد View ایجاد کنید
در مرحله بعد، یک تابع view برای فرم ثبت نام ایجاد می کنید. ابتدا تابع render و همچنین RegisterUserForm را از forms.py وارد کنید. سپس مدل User را از django.contrib.auth.models وارد کنید.
تابع view با نام register، RegisterUserForm را می گیرد. آن را در قالب register.html رندر می کند.
from django.shortcuts import render,\nfrom django.http import HttpResponse,Http404\nfrom .forms import RegisterUserForm\nfrom django.contrib.auth.models import User\ndef register(request):\n form=RegisterUserForm\n context={'form':form}\n return render(request,'register.html',context)\n
مسیر URL را ایجاد کنید
یک مسیر URL برای قالب register.html ایجاد کنید. این URL مسیری است برای تابع view که ایجاد کردید. نام ثبت نام را به آن بدهید تا بتوانید از نام آن برای فراخوانی آن در قالب استفاده کنید.
from django.urls import path\nfrom . import views\nurlpatterns=[\n path ('register', views.register, name='register'),\n]\n
بارگذاری روی یک الگو
اکنون که مسیر view و URL را دارید، می توانید قالب register.html را در پوشه برنامه ایجاد کنید. شما از django-crispy-forms برای رندر RegisterUserForm استفاده خواهید کرد.
در قالب register.html، base.html را گسترش دهید. base.html حاوی پیوندهای بوت استرپ است که برای فرم دادن به فرم ثبت نام استفاده می کنید. سپس django-crispy-forms را با register.html با استفاده از تگ های قالب بارگذاری کنید.
{% extends 'base.html' %}\n{% load crispy_forms_tags %}\n{% block content %}\n<div class="container" style="">\n <div class="row">\n <div class="col-md-2"></div>\n <div class="col-md-8">\n <div class="card" style="color:black;">\n <div class="card-body">\n <h5 class="card-title"><a>Register to be a member</a> <span style="float:right">Are you a member? <a href="#" class="text-primary">Login now</a></span></h5>\n <div class="card-text">\n <form action="" method="POST" novalidate>\n {% csrf_token %}\n {{ form|crispy}}\n <button type="submit" class="btn btn-primary btn-sm"> Register</button>\n </form>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n{% endblock %}
این فرم شامل csrf_token است که از فرآیند ثبت نام در برابر هکرها محافظت می کند. فرم را با همان نام متغیر در تابع view ارائه دهید. سپس فیلتر | crispy را به متغیر Django {{form}} اضافه کنید. این فرم را به شکل ترد تبدیل می کند.
سرور را اجرا کنید. سپس، برنامه را در یک مرورگر در http://127.0.0.1:8000/register بررسی کنید. باید فرم نمایش داده شده را به شکل زیر مشاهده کنید:
شما یک فرم ثبت نام را با استفاده از فرم های ترد ارائه کرده اید! توجه داشته باشید که جنگو به طور خودکار اعتبارسنجی را به فرم اضافه کرد. این موارد شامل الزاماتی مانند مجوزهای نام کاربری و رمز عبور است.
برای داشتن یک سیستم ثبت نام کامل، منطق احراز هویت را به تابع view اضافه کنید. همچنین می توانید یک صفحه ورود به سیستم برای ورود کاربران ثبت نام شده اضافه کنید. کاربران برای ورود به برنامه باید شرایط احراز هویت را رعایت کنند.
کتابخانه django-crispy-forms به شما امکان می دهد فرم های معتبر را به سرعت و به راحتی ارائه دهید. اعتبارسنجی داده ها تضمین می کند که داده های دقیقی از کاربران خود دارید.
داده ها هنگام برقراری ارتباط با کاربران و تجزیه و تحلیل معیارهای عملکرد مفید هستند.
چرا از فرم های django-crispy استفاده می کنیم؟
استفاده از کتابخانه فرمهای ترد برای رندر کردن فرمها در جنگو نمونهای عالی از نحوه اعمال اصل DRY است. django-crispy-forms اجزای قابل استفاده مجدد را ایجاد می کند که می توانید آنها را در قالب ها رندر کنید.
آنها با کد HTML داخلی ارائه می شوند. کد شما را از زحمت ساختاردهی و اعتبارسنجی فرم ها نجات می دهد. فرمهای ترد برچسب و فیلتری ارائه میکنند که فرمها را در قالب div ارائه میکند. آنها همچنین قابلیت پیکربندی و کنترل HTML ارائه شده را فراهم می کنند.
django-crispy-forms به خوبی با سیستم احراز هویت جنگو کار می کند. شما می توانید یک سیستم احراز هویت برای تایید کاربران خود بدون نوشتن کد زیاد ایجاد کنید.