es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Quiero ejecutar mi declaración else en (views.py) pero cuando se inicia el servidor, automáticamente va a la declaración if.

views.py

class AddQuestion(View):

def post(self, request):
    forms = QuestionForm(request.POST)
    if forms.is_valid:
        forms.save()
        print("Declaración de si")
        return redirect(reverse('home'))
    else:
        print("Declaración de otro modo")
        return render(request,'file/addQuestion.html')


def get(self, request):
    forms = QuestionForm()
    context = {'forms': forms}
    return render(request,'file/addQuestion.html',context)

forms.py

from django.forms import ModelForm
from .models import Question
from django.core.exceptions import ValidationError

class QuestionForm(ModelForm):

class Meta:
    model = Question
    fields = "__all__"



def clean_answer(self):
    answer = self.cleaned_data['answer']
    option1 = self.cleaned_data['option1']
    option2 = self.cleaned_data['option2']
    option3 = self.cleaned_data['option3']
    option4 = self.cleaned_data['option4']
    if answer == option1 or answer == option2 or answer == option3 or answer == option4:
        return answer
    else: 
        raise ValidationError("Seleccione una respuesta de las opciones.")
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Explicación del Código

    Este código es parte de una aplicación web de Django y contiene la implementación de las vistas para añadir una nueva pregunta en la aplicación. La clase AddQuestion es una subclase de la clase View, que es una vista basada en clases genérica en Django.

    El método post se llama cuando el formulario en la página se envía con una petición POST. Crea una nueva instancia del modelo formulario QuestionForm con los datos enviados en la petición. Si los datos del formulario son válidos, los guarda en la base de datos y redirige al usuario a la página principal. Si los datos del formulario no son válidos, vuelve a renderizar la página del formulario con los mensajes de error.

    El método get se llama cuando el usuario accede a la página “añadir pregunta” con una petición GET. Crea una nueva instancia del modelo formulario QuestionForm y lo pasa al template como contexto, que renderiza el formulario con campos de entrada para que el usuario los rellene.

    La clase QuestionForm es una subclase de la clase ModelForm en Django, que se utiliza para crear formularios HTML a partir de modelos. Especifica el modelo Question como modelo para basar el formulario en él y incluye todos sus campos en el formulario.

    El método clean_answer es un método personalizado de validación de formulario que comprueba si la respuesta seleccionada es una de las opciones disponibles en el formulario de la pregunta. Si la respuesta es válida, se devuelve. Si la respuesta no es válida, se genera un ValidationError con un mensaje de error personalizado que se muestra al usuario.

Comments are closed.