@H0leck

Как отправить данные в базу данных через form?

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

forms.py:

class CallOrderForm(forms.ModelForm):
    class Meta:
        model = CallOrder
        fields = ['first_name', 'phone', 'email_field', 'message']
        widgets = {
            'first_name': forms.TextInput(attrs={'class': 'form-control'}),
            'phone': forms.TextInput(attrs={'class': 'form-control'}),
            'email_field': forms.TextInput(attrs={'class': 'form-control'}),
            'message': forms.Textarea(attrs={'class': 'form-control', 'rows': '3'}),
        }


models.py:

class CallOrder(models.Model):
    first_name = models.CharField(max_length=50, blank=True, verbose_name='First name')
    phone = PhoneNumberField(null=False, blank=False, unique=False, verbose_name='Phone')
    email_field = models.EmailField(blank=True, verbose_name='Email')
    message = models.TextField(max_length=400, blank=True, verbose_name='Comments')
    created_at = models.DateTimeField(auto_now=True, verbose_name='Created at')

    class Meta:
        verbose_name = 'Call order'
        verbose_name_plural = 'Call orders'


views.py

def base(request):
    header_menu_button = {'': 'Home', 'qui_sommes_nous': 'Qui sommes nous', 'nos_services': 'Nos services', 'avis': 'Avis', 'contacts': 'Contacts', 'faq': 'FAQ', 'partenaires': 'Partenaires'}
    content_body = {'qui_sommes_nous': 'qui_sommes_nous_content', 'nos_services': 'nos_services_content', 'avis': 'avis_content', 'contacts': 'contacts_content', 'faq': 'faq_content', 'partenaires': 'partenaires_content'}
    form = CallOrderForm()
    return render(request=request, template_name='repair_service/base.html', context={'title': 'Mr.Ginzby', 'header_menu_button': header_menu_button, 'content_body': content_body, 'form': form})

def call_back(request):
    if request.method == 'POST':
        form = CallOrderForm(request.POST)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/thanks/')
    else:
        form = CallOrderForm()
    return render(request, 'repair_service/base.html', {'form': form})


template:

<form action="" method="post">
    {% csrf_token %}<br>
    {{ form.as_p }}
    <div class="d-grid gap-2"><input type="submit" value="Submit" class="btn btn-success"></div>
</form>
  • Вопрос задан
  • 60 просмотров
Решения вопроса 1
@H0leck Автор вопроса
Решено:

def base(request):
    context='' # for the error local variable `context` referenced before assignment.
    if request.method == 'POST':
        form = CallOrderForm(request.POST)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/thanks/')
    else: # Get condition
        header_menu_button = {'': 'Home', 'qui_sommes_nous': 'Qui sommes nous', 'nos_services': 'Nos services', 'avis': 'Avis', 'contacts': 'Contacts', 'faq': 'FAQ', 'partenaires': 'Partenaires'}
        content_body = {'qui_sommes_nous': 'qui_sommes_nous_content', 'nos_services': 'nos_services_content', 'avis': 'avis_content', 'contacts': 'contacts_content', 'faq': 'faq_content', 'partenaires': 'partenaires_content'}
        form = CallOrderForm()
        context={'title': 'Mr.Ginzby', 'header_menu_button': header_menu_button, 'content_body': content_body, 'form': form}
        
    return render(request, 'repair_service/base.html', context)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы