Най-добрият начин да овладеете Django е да го използвате за разработване на приложения с пълен стек. Ще срещнете много интересни функции, когато работите с рамката. Един от тях е как да изобразите формуляри в шаблони с помощта на хрупкави форми.
Използването на django-crispy-forms е един от многото начини, по които можете да изобразите формуляри в Django. Зависимостта ви позволява да създавате формуляри в шаблони, без да пишете HTML код. Можете лесно да създавате оформления за многократна употреба, без да се налага да пишете код на формуляр.
Можете да научите повече, като инсталирате библиотеката, след това я конфигурирате и използвате за създаване на регистрационен формуляр.
Как работи django-crispy-forms
The django-crispy-forms библиотека идва с вграден HTML код, който можете да персонализирате според вашите нужди. Той включва филтър с име |хрупкава който изобразява базирани на div форми в шаблона.
The {% хрупкав %} tagswill рендира формуляри според конкретна настройка.django-crispy-forms работи добре с други зависимости на шаблони като Bootstrap и Tailwind CSS.
Нека да видим как работи това в шаблон.
Инсталирайте Crispy Forms
Започнете от създаване на Django проект и ап. След това инсталирайте най-новата версия на django-crispy-forms, като използвате Pipenv със следната команда:
pipenv Инсталирай django-crispy-forms
Успешната инсталация ще изглежда като на снимката по-долу:
Конфигурирайте django-crispy-forms в настройките
След инсталирането трябва да регистрирате хрупкави форми като зависимост в настройките на проекта. Като го регистрирате, библиотеката с хрупкави формуляри ще бъде достъпна за всички приложения в проекта.
В проекта settings.py файл, добавете низа 'crispy_forms':
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myapp',
'хрупкави_форми',
]
Създаване на формуляр
Трябва да синхронизирате регистрационния си формуляр с вградения Django формуляр за създаване на потребители, за да помогнете с удостоверяването.
Вграденият Django потребителско удостоверяване системата обработва общи изисквания като валидиране на пароли и издаване на разрешения.
Системата също обработва валидирането на формуляра вместо вас. Така че можете да създавате формуляри, без да се налага да се справяте сами с валидирането. Ако сте правили валидиране на формуляр в други рамки, ще знаете колко тромаво може да бъде. Не и с Джанго.
Модулът за удостоверяване има a Потребител модел или обект. The Потребител обектът е основният компонент на системата за удостоверяване на потребителя. Той обработва разрешения, удостоверява потребителски профили на регистрирани потребители, контрол на достъпа и много повече.
The UserCreationForm използва вградения Потребител обект за регистриране на нови потребители. Той наследява от класа ModelForm.
Първо импортирайте формуляри от модула за формуляри на Django. След това импортирайте UserCreationForm от django.contrib.auth.forms. Освен това импортирайте вградените Потребител модел от django.contrib.auth.models. След това импортирайте въведените полета от django ModelForm.
от Джанго импортиране форми
отДжанго.contrib.auth.формиимпортиранеUserCreationForm
отДжанго.contrib.auth.моделиимпортиранеПотребител
от django.forms импортиране ModelForm, TextInput, EmailInput, ImageField, Textarea
След това създайте регистрационен обект с име Регистриране на потребителска форма. Това отнема UserCreationForm като аргумент. Добавете Потребител обектни полета като имейл удостоверяване, потребителско име и две пароли.
класРегистриране на потребителска форма(Формуляр за създаване на потребител):
имейл = формуляри. EmailField (max_length=254, help_text='Задължително. Въведете валиден имейл адрес.')
класМета:
модел = потребител
полета = ('потребителско име', 'електронна поща', 'парола1', 'парола2')
Тези полета са основните атрибути на потребител във формуляра за регистрация. Те са задължителни данни, които потребителите трябва да попълнят, за да може системата да ги удостовери.
Създайте функция за изглед
След това ще създадете функция за преглед на регистрационния формуляр. Първо, импортирайте функцията за рендиране, както и Регистриране на потребителска форма от forms.py. След това импортирайте Потребител модел от django.contrib.auth.models.
Функцията за преглед, наречена register, взема Регистриране на потребителска форма. Ще го изобрази на register.html шаблон.
от django.shortcuts импортиране изобразявам,
от django.http импортиране HttpResponse, Http404
от .форми импортиране Регистриране на потребителска форма
отДжанго.contrib.auth.моделиимпортиранеПотребител
дефрегистрирам(заявка):
form=RegisterUserForm
контекст={'форма':form}
връщане на изобразяване (заявка,'register.html', контекст)
Създайте URL път
Създайте URL път за register.html шаблон. Този URL е пътят за функцията за преглед, която току-що създадохте. Дайте му името регистрирам, така че можете да използвате името, за да го наричате в шаблон.
от django.urls импортиране път
от. импортиране изгледи
urlpatterns=[
път ('регистрирам', views.register, име='регистрирам'),
]
Зареждане на шаблон
Сега, след като имате изгледа и URL пътя, можете да създадете register.html шаблон в папката на приложението. Ще използвате django-crispy-forms, за да изобразите Регистриране на потребителска форма.
В register.html шаблон, разширете база.html. The база.html съдържа Bootstrap връзки ще използвате за стилизиране на регистрационния формуляр. След това заредете django-crispy-forms с register.html, като използвате шаблонни тагове.
{% се удължава 'база.html' %}
{% load crispy_forms_tags %}
{% блокиране на съдържанието %}
<div клас="контейнер" стил="">
<div клас="ред">
<div клас="col-md-2"></div>
<div клас="col-md-8">
<div клас="карта" стил="цвят черен;">
<div клас="тяло на картата">
<h5 клас="карта-заглавие"><а>Регистрирайте се, за да станете член</a><span style="float: прав">Членуваш ли? <a href="#" клас="текст-основен">Влез Сега</a></span></h5>
<div клас="карта-текст">
<форма действие="" метод="ПУБЛИКУВАНЕ" новалидирам>
{% csrf_token %}
{{ форма|хрупкаво}}
<тип бутон="Изпращане" клас="btn btn-основен btn-sm"> Регистрирам</button>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{% endblock %}
Формулярът включва csrf_token, който защитава процеса на регистрация от хакери. Изобразете формуляра със същото име на променлива като във функцията за изглед. След това добавете |хрупкав филтър към Django {{form}} променлива. Така формата ще стане хрупкава.
Стартирайте сървъра. След това проверете приложението в браузър на адрес http://127.0.0.1:8000/register. Трябва да видите показаната форма, както е илюстрирано по-долу:
Създадохте регистрационен формуляр с помощта на хрупкави форми! Забележете, че Django автоматично добави валидиране към формуляра. Те включват изисквания като разрешения за потребителско име и парола.
За да имате пълна система за регистрация, добавете логика за удостоверяване към функцията за преглед. Можете също да добавите страница за вход, за да влезете регистрирани потребители. Потребителите трябва да изпълнят изискванията за удостоверяване, за да влязат в приложението.
Библиотеката django-crispy-forms ви позволява бързо и лесно да визуализирате валидирани формуляри. Валидирането на данни гарантира, че имате точни данни от вашите потребители.
Данните са полезни, когато общувате с потребителите и анализирате показателите за ефективност.
Защо да използвате django-crispy-forms?
Използването на библиотеката с хрупкави формуляри за изобразяване на формуляри в Django е чудесен пример за това как да приложите принципа DRY. django-crispy-forms създава компоненти за многократна употреба, които можете да визуализирате в шаблони.
Те идват с вграден HTML код. Кодът ще ви спести досадното структуриране и валидиране на формуляри. Хрупкавите форми предоставят етикет и филтър, който изобразява формулярите във формат div. Те също така предоставят възможност за конфигуриране и контрол на изобразения HTML.
django-crispy-forms работи добре със системата за удостоверяване на Django. Можете да създадете система за удостоверяване, за да проверите вашите потребители, без да пишете много код.