У меня есть Django ModelForm, который прекрасно отрисовывается на внешнем интерфейсе и хотел бы, чтобы страница перенаправлялась на домашнюю страницу после POST.
Когда я заполняю форму и нажимаю "Отправить", я вижу POST проходит через терминал с состоянием 302 и не выполняет перенаправление. Если я удалю перенаправление в своих представлениях и отправлю данные из внешнего интерфейса, POST получит статус 200.
#views.py
from django.shortcuts import render, redirect
from django.contrib import messages
from .forms import OptInForm
from django.forms import forms
def index(request):
return render(request, 'pages/index.html')
def arthritis(request):
form = OptInForm()
if request.method == 'POST':
form = OptInForm(request.POST)
if form.is_valid():
form.save(commit=True)
return redirect('index')
else:
form = OptInForm()
return render(request, 'pages/physical_therapy/arthritis_pain.html', {'form': form})
Вот форма, из которой извлекается представление:
#forms.py
from django.forms import ModelForm
from .models import OptIn
class OptInForm(ModelForm):
class Meta:
model = OptIn
fields = ['first_name', 'last_name', 'email', 'phone']
Это модель:
#models.py
from django.db import models
from django.forms import ModelForm
from datetime import datetime
class OptIn(models.Model):
opt_in_option = models.CharField(max_length=50, blank=True, choices = OPT_IN_CHOICES)
first_name = models.CharField(max_length=30, blank=False)
last_name = models.CharField(max_length=30, blank=False)
email = models.EmailField(max_length=40, blank=False)
phone = models.CharField(max_length=20, blank=False)
contact_date = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.first_name + " " + self.last_name
Вот URL-адреса:
#urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
path('arthritis', views.arthritis, name='arthritis'),
]
Не уверен, почему я получаю POST в своем терминале со статусом 302 и браузер отказывается перенаправить обратно на страницу индекса.