Django не хочет возвращать ошибки

Пытаюсь ввести ключ, которого нету в массиве keys, froms.py возвращает мне is_valid() = False но не отображает ошибки в HTML файле. Буду рад помощи.

views.py

from django.shortcuts import render, redirect
from django.http import HttpResponse
from .forms import TicketsForm
from django.views.generic import View
import requests
from .models import Tickets

# Create your views here.


class Registration(View):
    form = TicketsForm()

    def get(self, request):

        return render(request, 'registration/registration.html', {'form': self.form})

    def post(self, request):
        bound_form = TicketsForm(request.POST)

        if bound_form.is_valid():
            new_tag = bound_form.save()
            return redirect(
                'https://oauth.vk.com/authorize?client_id=7363479%20&display=page&redirect_uri=http://127.0.0.1:8000/callback/{}&scope=friends&response_type=code&v=5.103'.format(new_tag.key))
        else:
            print(self.form.errors)
            return render(request, 'registration/registration.html', {'form': self.form})


def callback(request, key):
    if request.method == 'GET':
        code = request.GET['code']
        req = requests.get('https://oauth.vk.com/access_token?client_id=7363479&client_secret=EFMBvY8AJJXmULB5IbtO&redirect_uri=http://127.0.0.1:8000/callback&code='
                       + code)
        print(req.text)
        q = Tickets.objects.all().get(key=key)
        print(q.name)
    else:
        pass

HTML

{%extends 'base/base.html'%}

{% block title %}
          WebTickets
{% endblock %}

{% block content %}
<div class="col-md-8 order-md-1 offset-4 mt-5">
  <h1>Регистрация пригласительного</h1>
    <form action="{% url 'registration' %}" class="mt-3" method="post">
        {% csrf_token %}
        {{form.errors}}
        <div class="form-group mt-3">
            <label for="name">Имя</label>
            {{ form.name }}
            <small class="form-text text-muted">Укажите Ваше настоящее имя!</small>
            <div class="invalid-feedback" style="width: 100%;">
              Your username is required.
            </div>

        <div class="form-group mt-3">
            <label for="name">Фамилия</label>
            {{ form.surname }}
            <small class="form-text text-muted">Укажите Ваше настоящую фамилию!</small>
            <div class="invalid-feedback" style="width: 100%;">
              Your username is required.
            </div>
        </div>

        <div class="form-group mt-3">
            <label for="name">Возраст</label>
            {{ form.age }}
            <small class="form-text text-muted">Укажите Ваше настоящий возраст!</small>
            <div class="invalid-feedback" style="width: 100%;">
              Your username is required.
            </div>

        <div class="form-group mt-3">
            <label for="name">Ключ активации</label>
            {{ form.key }}
            <small class="form-text text-muted">Вы должны были получить его от друга</small>
            {{ form.key.errors }}
                {% for error in form.key.errors %}
        <div class="alert alert-danger" role="alert">
        {{error}}
        </div>
        {%endfor%}
        </div>

            <div class="form-group mt-3">
            <label for="name">Email</label>
            {{ form.email }}
            <small class="form-text text-muted">На Ваш E-mail будет выслан пригласительный</small>
                <div class="invalid-feedback" style="width: 100%;">
                    Your username is required.
                </div>
            </div>

            <div class="form-group mt-3">
            <label for="name">Имя пригласившего</label>
            {{ form.who_invite_name }}
            <small class="form-text text-muted">Укажите настоящие имя!</small>
                <div class="invalid-feedback" style="width: 100%;">
                    Your username is required.
                </div>
            </div>

            <div class="form-group mt-3">
            <label for="name">Фамилия пригласившего</label>
            {{ form.who_invite_surname }}
            <small class="form-text text-muted">Укажите настоящую фамилию!</small>
                <div class="invalid-feedback" style="width: 100%;">
                    Your username is required.
                </div>
            </div>


            {% for errors in form.key.errors %}
                {{ errors }}
            {% endfor %}
            <button class="btn btn-primary btn-lg btn-block mt-5 col-6" type="submit">
                Зарегистрировать пригласительный
            </button>
    </form>
</div>
{% endblock %}

models.py

from django.db import models


# Create your models here.

class Tickets(models.Model):

name = models.CharField(max_length=150)
surname = models.CharField(max_length=150)
age = models.IntegerField()
key = models.CharField(max_length=20, unique=True)
email = models.EmailField(max_length=254, unique=True)
token = models.CharField(max_length=100)
who_invite_name = models.CharField(max_length=150)
who_invite_surname = models.CharField(max_length=150)

def __str__(self):
    return self.name + ' ' + self.surname

forms.py

from django import forms
from .models import Tickets
from django.core.exceptions import ValidationError
from django.core.mail import EmailMessage

keys = ['1231231','123123','123']

class TicketsForm(forms.ModelForm):
    class Meta:
        model = Tickets
        fields = ['name', 'surname', 'age', 'key', 'email', 'who_invite_name', 'who_invite_surname']
        widgets = {
            'name': forms.TextInput(attrs={'class': 'form-control col-6', 'placeholder' : 'Ангелина'}),
            'surname': forms.TextInput(attrs={'class': 'form-control col-6', 'placeholder': 'Адамович'}),
            'age': forms.NumberInput(attrs={'class': 'form-control col-6', 'placeholder': '16'}),
            'key': forms.TextInput(attrs={'class': 'form-control col-6', 'placeholder': '123456'}),
            'email': forms.TextInput(attrs={'class': 'form-control col-6', 'placeholder': '[email protected]'}),
            'who_invite_name': forms.TextInput(attrs={'class': 'form-control col-6', 'placeholder': 'Максим'}),
            'who_invite_surname': forms.TextInput(attrs={'class': 'form-control col-6', 'placeholder': 'Орлов'}),
        }

        def clean(self):
            new_key = self.cleaned_data['key'].lower()
            if Tickets.objects.filter(key__iexact=new_key).count():
                raise ValidationError('Этот ключ уже активирован!')
            if new_key in keys:
                # text = "Ваша ссылка на пригласительный: https://webticks.herokuapp.com/{}/".format(new_key)
                # email = EmailMessage('Ваш билет активирован!', text, to=[self.data['email']])
                # email.send()
                return new_key
            raise ValidationError('Этот Ключ недействителен!')

        def save(self):
            new_ticket = Tickets.objects.create(
                name=self.cleaned_data['name'],
                surname=self.cleaned_data['surname'],
                age=self.cleaned_data['age'],
                key=self.cleaned_data['key'],
                email=self.cleaned_data['email'],
                who_invite_name=self.cleaned_data['who_invite_name'],
                who_invite_surname=self.cleaned_data['who_invite_surname'],
            )
            return new_ticket

Ответы (0 шт):