L o a d i n g
Создание формы обратной связи на сайте с использованием Django Linux Ubuntu

На сегодняшний день я научился создавать и обрабатывать форму обратной связи на сайте с использованием Django. Этот процесс включает несколько ключевых шагов: создание модели для данных формы, формы для пользовательского ввода, представления для обработки запросов и шаблон для отображения формы и сообщений об успешной отправке. Давайте подробнее рассмотрим каждый из этих шагов на примере кода.

1. Определение модели данных

Первым шагом я создал модель FormsHome, которая определяет структуру данных для хранения информации, введенной пользователями через форму обратной связи.

from django.db import models
from django.utils import timezone

class FormsHome(models.Model):
    SERVICE_CHOICES = [
        ('email', 'Email'),
        ('whatsapp', 'WhatsApp'),
        ('telegram', 'Telegram'),
    ]

    nameFormsHome = models.CharField(max_length=200, verbose_name='Имя отправителя')
    emailFormsHome = models.EmailField(verbose_name='Email отправителя')
    callFormsHome = models.CharField(max_length=10, choices=SERVICE_CHOICES)
    massageFormsHome = models.TextField(verbose_name='Сообщение')
    time_create = models.DateTimeField(default=timezone.now, verbose_name='Дата публикации')

    def __str__(self):
        return self.nameFormsHome

    class Meta:
        verbose_name = 'Сообщение'
        verbose_name_plural = 'Сообщения'

2. Создание формы Django

Для того чтобы пользователи могли вводить данные, я определил форму formsHome, которая основана на модели FormsHome.

from django import forms
from .models import FormsHome

class formsHome(forms.ModelForm):
    class Meta:
        model = FormsHome
        fields = ['nameFormsHome', 'emailFormsHome', 'callFormsHome', 'massageFormsHome']

3. Представления (Views) Django

Для обработки данных, отправленных через форму, я создал представление FormsVievs, которое сохраняет данные, если форма заполнена правильно, и перенаправляет пользователя на страницу благодарности.

from django.shortcuts import render, redirect
from .forms import formsHome
from .models import FormsHome

def FormsVievs(request):
    if request.method == 'POST':
        form = formsHome(request.POST)
        if form.is_valid():
            form.save()
            return redirect('forms_home_thanks')
    else:
        form = formsHome()
    
    return render(request, 'forms_home.html', {'form': form})

def contact_thanks_view(request):
    return render(request, 'forms_thanks.html')

4. Шаблон HTML для формы

Наконец, я создал HTML-шаблон forms_home.html, который отображает форму обратной связи и использует Django-шаблоны для подстановки данных и обработки формы.

<div class="tj-contact-form">
    <form action="{% url 'forms_home' %}" method="POST">
        {% csrf_token %}
        <div class="row gx-3">
            <div class="col-sm-6">
                <div class="form_group">
                    <input type="text" name="nameFormsHome" id="nameFormsHome" value="{{ form.nameFormsHome.value|default_if_none:'' }}" placeholder="Имя"
                        autocomplete="off">
                </div>
            </div>
            <div class="col-sm-6">
                <div class="form_group">
                    <input type="email" name="emailFormsHome" id="emailFormsHome" value="{{ form.emailFormsHome.value|default_if_none:'' }}" placeholder="Email"
                        autocomplete="off">
                </div>
            </div>
            <div class="col-12">
                <div class="form_group">
                    <select name="callFormsHome" id="callFormsHome" class="tj-nice-select">
                        <option value="" selected disabled>Выберите удобный вид связи</option>
                        <option value="email" {% if form.callFormsHome.value == "email" %}selected{% endif %}>Email</option>
                        <option value="whatsapp" {% if form.callFormsHome.value == "whatsapp" %}selected{% endif %}>WhatsApp</option>
                        <option value="telegram" {% if form.callFormsHome.value == "telegram" %}selected{% endif %}>Telegram</option>
                    </select>
                </div>
            </div>
            <div class="col-12">
                <div class="form_group">
                    <textarea name="massageFormsHome" id="massageFormsHome" placeholder="Сообщение">{{ form.massageFormsHome.value|default_if_none:'' }}</textarea>
                </div>
            </div>
            <div class="col-12">
                <div class="form_btn">
                    <button type="submit" class="btn tj-btn-primary">Отправить</button>
                </div>
            </div>
        </div>
    </form>
</div>

Заключение

Таким образом, благодаря использованию Django, я смог настроить полнофункциональную форму обратной связи на моем сайте. Этот процесс включал создание модели данных, формы для пользовательского ввода, представления для обработки запросов и HTML-шаблона для отображения формы. Теперь пользователи могут легко отправлять мне сообщения через сайт, а я могу управлять этими сообщениями в административной панели Django.

Написать комментарий

Вы можете оставить комментарий автору статьи Обязательные поля помечены *