Как добавить опцию подписки на сайте Django

Я пытаюсь добавить опцию подписки на рассылку новостей на сайт django. Когда посетитель вводит правильный адрес электронной почты, он будет сохранен в базе данных. Форма подписки является частью шаблона base.html. Все остальные шаблоны сайта расширяют этот шаблон. Я хочу реализовать это DRY способом. Вот как я пытаюсь это сделать :

forms.py :

from dataclasses import fields
from django import forms
from . models import Subscribers, MailMessage

class SubcribersForm(forms.ModelForm):
    class Meta: 
        model = Subscribers
        fields = ['email', ]

views.py :

def base(request):
    if request.method == 'POST':
        form = SubcribersForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('/')
    else:
        form = SubcribersForm()

    context = {'form': form}
    return render(request, 'base.html', context)

Шаблон: base.html

        <form method = "POST" class="signup-form form-inline justify-content-center pt-3">
            {% csrf_token %}
            <div class="form-group">
                <label class="sr-only" for="semail">{{context}}</label>
                <input type="email" id="semail" name="semail1"  class="form-control mr-md-1 semail" placeholder="Enter email">
            </div>
            <button type="submit" class="btn btn-primary">Subscribe</button>
        </form>
            

models.py :

class Subscribers(models.Model):
    email = models.EmailField(null=True)
    date = models.DateTimeField(auto_now_add=True)

    def __str__self(self):
        return self.email

В бэкенде я вижу, что таблица Subscribers была создана. Однако, когда я ввожу любой адрес электронной почты с главной и нажимаю кнопку подписаться, он не сохраняется в базе данных. В чем здесь может быть проблема?

Возможно, в вашей форме не объявлено действие. Предположим, что у вас есть такой url:

path('add-subscriber/', base, name='base'),

... вашей форме потребуется способ вызвать его после отправки, например, так:

        <form method = "POST" action="{% url 'base' %}" class="signup-form form-inline justify-content-center pt-3">
            {% csrf_token %}
            <div class="form-group">
                <label class="sr-only" for="semail">{{context}}</label>
                <input type="email" id="semail" name="semail1"  class="form-control mr-md-1 semail" placeholder="Enter email">
            </div>
            <button type="submit" class="btn btn-primary">Subscribe</button>
        </form>
            
Вернуться на верх