Django Validation работает в админке django, но не работает в html шаблоне

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

вот моя модель:

class foodlancer(models.Model):
    Your_Name = models.CharField(max_length=50)
    Kitchen_Name = models.CharField(max_length=50)
    Email_Address = models.EmailField(max_length=50)
    Street_Address = models.CharField(max_length=50)
    City = models.CharField(max_length=5)
    phone = PhoneNumberField(null=False, blank=False, unique=True)
    
    def __str__(self):
        return f'{self.Your_Name}'

также, я отключил html5 валидацию

forms.py

class FoodlancerRegistration(forms.ModelForm):
    phone = forms.CharField(widget=PhoneNumberPrefixWidget(initial="US"))

    class Meta:
        model = foodlancer
        fields = "__all__"

views.py:

def apply_foodlancer(request):
    form = FoodlancerRegistration()
    return render(request, 'appy_foodlancer.html', {"form": form})

и, наконец, шаблон Django

<form method="POST" novalidate>
   {% csrf_token %}
   {{ form.as_p }}
   <button type="submit" class="cta-btn cta-btn-primary">Submit</button>

</form>

Спасибо за ваше время/помощь

У вас нет логики сохранения формы в представлении. Попробуйте сделать что-то вроде этого:

def apply_foodlancer(request):
  if request.method == 'POST':
    form = FoodlancerRegistration(data=request.POST)
    if form.is_valid(): # if it's not valid, error messages are shown in the form
       form.save()
       # redirect to some successpage or so
       return HttpResponse("<h1>Success!</h1>")
  else:
    # make sure to present a new form when called with GET
    form = FoodlancerRegistration()
  return render(request, 'appy_foodlancer.html', {"form": form})

Также проверьте, что метод вашей формы в HTML-файле - post. Я не уверен, что POST также работает. Избегайте определения полей в модельной форме с помощью __all__. Это менее безопасно, как написано в docs

Вернуться на верх