Django Перенаправление после POST - PullRequest
0 голосов
/ 19 апреля 2020

У меня есть 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 и браузер отказывается перенаправить обратно на страницу индекса.

Ответы [ 2 ]

0 голосов
/ 20 апреля 2020

В итоге я исправил jQuery обновление ...

0 голосов
/ 19 апреля 2020

Вместо перенаправления ('index') вы можете использовать return HttpResponseRedirect(reverse_lazy('index'))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...