我有部分观点:
class Perguntas(FormView):
form_class = QuestaoForm
template_name = 'certificacoes/pergunta.html'
template_name_result = 'certificacoes/finalizado.html'
def dispatch(self, request, *args, **kwargs):
self.certificado = get_object_or_404(Certificado, slug=self.kwargs['slug_certificado'])
try:
self.user_logado = self.request.user.is_authenticated()
except TypeError:
self.user_logado = self.request.user.is_authenticated
if self.user_logado:
self.sessao = Sessao.objects.usuario_sessao(request.user, self.certificado)
return super(Perguntas, self).dispatch(request, *args, **kwargs)
def get_form(self, *args, **kwargs):
if self.user_logado:
self.questao = self.sessao.pegar_primeira_questao()
form_class = self.form_class
return form_class(**self.get_form_kwargs())
def get_form_kwargs(self):
kwargs = super(Perguntas, self).get_form_kwargs()
return dict(kwargs, questao=self.questao)
def form_valid(self, form):
if self.user_logado:
self.form_valid_usuario(form)
if self.sessao.pegar_primeira_questao() is False:
return self.resultado_final_usuario()
self.request.POST = {}
return super(Perguntas, self).get(self, self.request)
def form_valid_usuario(self, form):
hipotese = form.cleaned_data['respostas']
is_correta = self.questao.checar_correta(hipotese)
if is_correta is True:
pass
else:
self.sessao.add_incorreta(self.questao)
self.sessao.add_usuario_resposta(self.questao, hipotese)
self.sessao.remover_primeira_questao()
def get_context_data(self, **kwargs):
context = super(Perguntas, self).get_context_data(**kwargs)
context['questao'] = self.questao
context['certificado'] = self.certificado
return context
def resultado_final_usuario(self):
resultado = {
'certificado': self.certificado,
'sessao': self.sessao,
}
self.sessao.marcar_certificado_completo()
self.sessao.delete()
return render(self.request, self.template_name_result, resultado)
一个问题正确后,我想在问题所在的同一页面上发送正确答案。然后继续执行此检查之后的步骤。
if is_correta is True:
pass
else:
self.sessao.add_incorreta(self.questao)
self.sessao.add_usuario_resposta(self.questao, hipotese)
self.sessao.remover_primeira_questao()
我的模板如下:
{% extends "core/base.html" %}
{% load static %}
{% block content %}
{% if questao %}
<div class="container mt-5">
<div class="card">
<div class="card-header">
Questão
</div>
<div class="card-body">
<h5 class="card-title">{{ questao.situacao.enunciado|linebreaks }}</h5>
<p class="card-text">{{ questao|linebreaks }}</p>
<form class="form" method="POST">
{% csrf_token %}
{{ form.as_p }}
<div class="form-group">
<button type="submit" class="btn btn-primary" data-toggle="popover" title="Popover title" data-content="{{ Where I would like to receive the variable with the answer. }}">Responder</button>
</div>
</form>
</div>
</div>
</div>
{% endif %}
{% endblock %}
基本上,我想在弹出窗口上显示答案,如果用户在弹出窗口内输入“ Ok”,则继续下一个问题。谢谢。