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.")
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 claseView
, 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 formularioQuestionForm
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 formularioQuestionForm
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 claseModelForm
en Django, que se utiliza para crear formularios HTML a partir de modelos. Especifica el modeloQuestion
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 unValidationError
con un mensaje de error personalizado que se muestra al usuario.