Несколько последовательных ответов на один вопрос на одной странице (POST-запрос, django)

Я очень новичок в django и мне нужна помощь в структурировании проекта.

Я хотел бы сделать страницу (одну страницу), которая показывает изображение человека, пользователь должен узнать человека и написать его имя в поле. Ответ обрабатывается, и если он неправильный, игрок может попробовать еще раз.

Я могу сделать это на двух страницах (выбрать изображение, показать изображение, принять ответ; затем показать вердикт, вернуться). Но я не могу понять структуру представления индекса для того, чтобы сделать все это на одной странице

Итак, страница должна вести себя по-разному, если ответ уже был дан, или нет; если нет, она должна взять случайное изображение и показать его; если да, она должна сравнить результат POST запроса с переменной. Как мне это написать?

Вот views.py :


from django.http import HttpResponse
from django.template import loader, Context, Template
from .models import Mystere, Image, Indice
from .forms import Prop
from django.shortcuts import get_object_or_404, render

from scripts import load_data

def index(request):
    template = loader.get_template('home.html')
    load_data.run()
    
    global p, i
    
    p = Mystere.objects.create(id=0)
    
    i = Image.objects.all().first()
    i = i.image
    
    p = Mystere.objects.all().last()
    p = p.individu
    
    rep=Prop()
    
    context = {'question': i,
               'form': rep,
         }
    
    return HttpResponse(template.render(context, request))
    
    
def reponse(request):
    
    # proposition = request.POST['proposition']
    
    # if proposition == p:
    #     return HttpResponse('Bravo !')
    # else:
    #     return HttpResponse("Perdu ! C'était %s." % p)
    
    if request.method == 'POST':
        rep = Prop(request.POST)
        if rep.is_valid():
            rep=rep.cleaned_data[]
            if rep == p:
                return HttpResponse('Bravo !')
            
            else:
                return HttpResponse("Perdu ! C'était %s." % p)

Вернуться на верх