Как сравнить данные, полученные из базы данных, с данными, выбранными пользователем, в django

В настоящее время я работаю над проектом django (image-based captcha), который хранит изображения в базе данных вместе с дополнительной информацией (Gender & age groups).Для начала, когда проект запускается, пользователь попадает на индексную страницу (index.html) index page. и после нажатия кнопки принять участие пользователь попадает на другую страницу (test.html) страница испытания где случайным образом 9 извлеченных изображений из базы данных были показаны в виде сетки и пользователю предлагалось выбрать определенную группу изображений из показанных изображений, теперь у меня есть кнопка "TRY ANOTHER" в случае, если пользователь хочет перезагрузить новый набор изображений с другим вопросом и у меня есть кнопка "NO ONE" в случае, если ни одно изображение из заданной группы не показано в сетке. Кроме того, у меня есть еще одна и последняя кнопка "VERIFY", при нажатии на которую, если пользователь угадал правильно (выбранные изображения соответствуют результату вопроса), он будет перенаправлен на индексную страницу (index.html) или, если пользователь угадал неправильно, он перезагрузит страницу вызова с другим набором изображений и новым вопросом.

Теперь мой вопрос:

  1. how to compare the data fetched alongside with image with question.
  2. when the challenge page is loaded it take so much time, how can I reduce the latency( I do not use any external database to save images, instead I have used default database)
  3. how to make "TRY ANOTHER" button more efficient that it will only invoke the database to reload new set of image as well as new question without reloading the whole page.

приведенный ниже фрагмент кода является частью всего моего проекта, название приложения "basicapp"

В корневой папке проекта:

urls.py

from django.contrib import admin
from django.urls import path
from django.conf import settings
from django.conf.urls.static import static
from basicapp import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.index, name='index'),
    path('challenge', views.home, name='home'),
]+static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)

settings.py

MEDIA_ROOT = BASE_DIR / 'media'
MEDIA_URL = '/media/'

в папке basicapp:

forms.py

from .models import Image
from django import forms

class ImageForm(forms.ModelForm):
    class Meta:
        model = Image
        fields = '__all__'
        labels = {'photo':''} 

admin.py

from django.contrib import admin
from .models import Image
@admin.register(Image)
class ImageAdmin(admin.ModelAdmin):
    list_display = ['id','photo','age','gender']

models.py

from django.db import models

class Image(models.Model):
    photo = models.ImageField(upload_to="my_image")
    age_choice = (
            ('Child','Child'),
            ('Teenager','Teenager'),
            ('Adult','Adult'),
            ('Senior Adult','Senior Adult')
        )
    age = models.CharField(max_length=100,choices=age_choice, default='Child')
    gender_choice = (
            ('Male','Male'),
            ('Female','Female'),
        )
    gender = models.CharField(max_length=100,choices=gender_choice,default='Male')

views.py

from django.shortcuts import render
from .forms import ImageForm
from .models import Image
import random
def home(request):
    if request.method == 'POST':
        form = ImageForm(request.POST,request.FILES)
        if form.is_valid():
            form.save()
    form = ImageForm()
    img = Image.objects.order_by('?')[:12]
    age_total = ['Child','Teenager','Adult','Senior Adult']
    gender_total = ["Male","Female"]
    age_qs = random.choice(age_total)
    gender_qs = random.choice(gender_total)
    return render (request,'basicapp/test.html',{'form':form,'img':img,'age_qs':age_qs,'gender_qs':gender_qs})

def index(request):
    return render(request,'basicapp/index.html')

теперь в папке "templates", которая имеет подпапку "basicapp", находятся два html файла

  1. index.html

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>Index Page</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
  </head>
  <body>
    <div class="container text-center">
      <h1>Welcome, Please take part our captcha challenge</h1>
      <a class="btn btn-primary" href="{% url 'home' %}">Take Part</a>

    </div>
  </body>
</html>
2.test.html

Я просто хочу изменить вышеупомянутую страницу test.html таким образом, чтобы моя цель была достигнута. Должен отметить, что страница test.html буквально скопирована с внешнего ресурса, который я нашел в интернете: это страница

Последнее, что я должен вам сообщить, изображения, хранящиеся в базе данных, загружаются вручную из панели администратора: image objects. новые параметры изображения

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