زیباسازی فرم ها با Bootstrap
سلام
برای کار با کتابخانههای Front-End مثل Bootstrap لازم است تا از پکیچِ django-widget-tweaks در جنگو استفاده کنیم. اول باید آن را نصب کنیم:
pip install django-widget-tweaks
مثل همیشه باید به لیست برنامهها اضافه شود:
myproject/settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'widget_tweaks',
'boards',
]
حالا در برنامۀ خود از آن استفاده می کنیم:
templates/new_topic.html
{% extends 'base.html' %}
{% load widget_tweaks %}
{% block title %}Start a New Topic{% endblock %}
{% block breadcrumb %}
<li class="breadcrumb-item"><a href="{% url 'home' %}">Boards</a></li>
<li class="breadcrumb-item"><a href="{% url 'board_topics' board.pk %}">{{ board.name }}</a></li>
<li class="breadcrumb-item active">New topic</li>
{% endblock %}
{% block content %}
<form method="post" novalidate>
{% csrf_token %}
{% for field in form %}
<div class="form-group">
{{ field.label_tag }}
{% render_field field class="form-control" %}
{% if field.help_text %}
<small class="form-text text-muted">
{{ field.help_text }}
</small>
{% endif %}
</div>
{% endfor %}
<button type="submit" class="btn btn-success">Post</button>
</form>
{% endblock %}
در ابتدا باید آن را در برنامه لود کنیم . این کار با استفاده از تگِ قالبِ {% load widget_tweaks %} انجام می شود. نحوۀ بکارگیری از آن نیز به این شکل است:
{% render_field field class="form-control" %}
تگِ render_field بخشی از جنگو نبوده و داخل پکیجی است که آن را نصب کردهایم.
برای استفاده از این تگ باید دو پارامتر را تنظیم کنیم. اولین پارامتر مربوط به فیلدهای یک فرم و دومین پارامتر مربوط به تنظیم ویژگیهای آن در HTML است. برخی از مثال های تگ render_field را در زیر می بینیم.
{% render_field form.subject class="form-control" %}
{% render_field form.message class="form-control" placeholder=form.message.label %}
{% render_field field class="form-control" placeholder="Write a message!" %}
{% render_field field style="font-size: 20px" %}
سپس برای استفاده از تگهای مربوط به اعتبارسنجی در بوت استرپ باید فایل new_topic.html را ویرایش کنیم.
templates/new_topic.html
<form method="post" novalidate>
{% csrf_token %}
{% for field in form %}
<div class="form-group">
{{ field.label_tag }}
{% if form.is_bound %}
{% if field.errors %}
{% render_field field class="form-control is-invalid" %}
{% for error in field.errors %}
<div class="invalid-feedback">
{{ error }}
</div>
{% endfor %}
{% else %}
{% render_field field class="form-control is-valid" %}
{% endif %}
{% else %}
{% render_field field class="form-control" %}
{% endif %}
{% if field.help_text %}
<small class="form-text text-muted">
{{ field.help_text }}
</small>
{% endif %}
</div>
{% endfor %}
<button type="submit" class="btn btn-success">Post</button>
</form>
که در این حالت خروجی به شکل زیر تغییر می کند:


برای فرم بالا سه حالت در زمان rendering وجود دارد:
- Initial state: حالت اولیه بوده و درون فرم هیچ دیتایی وجود ندارد.
- Invalid: زمانی که داده ها معتبر نباشند از کلاس .is-invalid در CSS استفاده و پیام خطای مربوط به آن نیز در کلاس .invalid-feedback پیاده سازی شده و کادر مربوط به آن به رنگ قرمز در میآید.
- Valid: در حالت معتبر بودن ورودیها، از کلاس .is-valid در CSS استفاده شده و کادر مربوط به آن فیلد به رنگ سبز در می آید.
ترجمۀ اختصاصی توسط تمدن
مطلب بعدی:قالبهای فرم با قابلیت استفادۀ مجدد یا Reusable Forms Templates
مطلب قبلی:پیادهسازی فرم ها به شیوۀ استاندارد

دیدگاه خود را ثبت کنید
تمایل دارید در گفتگو شرکت کنید؟نظری بدهید!