在Django上提交POST后对Popover Bootstrap 4的响应

时间:2019-04-25 02:50:54

标签: python django

我有部分观点:

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”,则继续下一个问题。谢谢。

0 个答案:

没有答案