Как я могу получить данные формы из Django CreateView? - PullRequest
0 голосов
/ 26 марта 2020

У меня есть блог Django, где пользователи могут устанавливать статус каждого сообщения (активно, неактивно) при их создании. Я использую Django generi c представлений на основе классов и хотел бы перенаправить пользователя на созданное им сообщение, только когда статус установлен как «активный», в противном случае его следует перенаправить на домашнюю страницу. Как я могу получить эту отправленную информацию из формы, чтобы создать оператор if? Например: if status == "a" ...

views.py

from .models import Listing
from django.contrib.auth.mixins import LoginRequiredMixin
from django.contrib.messages.views import SuccessMessageMixin
from django.views.generic import CreateView

class PostCreateView(LoginRequiredMixin, SuccessMessageMixin, CreateView):
    model = Post
    fields = ['title', 'status', 'content']
    template_name = 'blog/post-form.html'
    success_message = 'Your post has been created.'

    def form_valid(self, form):
        form.instance.user = self.request.user
        return super().form_valid(form)

1 Ответ

0 голосов
/ 26 марта 2020

Я думаю, что " redirect " недопустимо в методе (form_valid), поэтому вы должны обязательно указать что-то вроде def post и получить значение в request.data. Я собираюсь показать вам код, который работает для меня в производстве. Вы даете мне знать, если это был правильный ответ.

класс LoginFormView (FormInvalidMessageMixin, LoginView):

template_name = "clientes/login.html

def post(self, request, *args, **kwargs):
    username = self.request.POST.get('username')
    password = self.request.POST.get('password')
    tipo_cuenta = self.request.POST.get('tipo-cuenta')
    tipo_cuenta = tipo_cuenta.strip()

    user = authenticate(username=username, password=password)

    if user:
        if has_group(user, 'admin'):
            messages.success(request, _('Not for admin'))
            return redirect('/login')

        cliente = Usuario.objects.filter(usuario=user).first()
        sucursal = Sucursal.objects.filter(usuario=user).first()
        empleado = Empleado.objects.filter(usuario=user).first()

        if tipo_cuenta == 'Punto afiliado':
            login(self.request, user)
            return redirect('/envios')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...