Как реализовать рендеринг в контроллере представления после get запроса Django

У меня есть следующий шаблон, в который я добавил запрос get

function openProject(projectId) {
        fetch(`/segmentation/test/`, {
            method: 'GET',
            headers: {
                'Content-Type': 'application/json'
            },
            mode: 'same-origin',
        })
        .then(response => {
            if (response.ok) {
                console.log("Всё супер");
            } else {
                console.error('Ошибка при открытии проекта');
            }
        })
        .catch(error => {
            console.error('Произошла ошибка:', error);
        });
    }

и следующий вид в нем я собираю всю информацию об изображениях и тегах, относящихся к этому проекту

def test(request):
    projectId = request.GET.get('projectId')
    if projectId:
        project = Project.objects.get(pk=projectId)
        _tags = project.tags.all()
        _images = project.images.all()
        print(_images)
        polygons = []
        colorPol = []
        for i in range(len(_images)):
            polygons.append([])
            colorPol.append([])

        for i in range(len(_images)):
            for rect in Rect.objects.all().filter(inImage=i+1):
                tempArr = []
                colorPol[i].append(rect.tag.Name)
                for p in rect.points.all():
                    tempArr.append([p.x, p.y])
                polygons[i].append(tempArr)
    else:
        _tags = []
        _images = []
        polygons = []
        colorPol = []

    return render(request,
                  'segmentation/testDraw.html',
                  {'tags': _tags, 'images': _images, 'title': 'Test Draw', 'rectForImage': polygons,
                   'colorPolArr': colorPol})

Мои урлы:

app_name = 'segmentation'

urlpatterns = [
    path('test/', test, name='testDraw'),
    path('projects/', project_show, name='project_show'),
]

пожалуйста, помогите мне решить эту проблему

Я пробовал изменить запрос на сообщение, но, насколько я понимаю, это не имеет значения

Чтобы реализовать рендеринг в представлении Django после обработки GET-запроса, вы обычно выполняете следующие шаги:

  1. Определите функцию представления Django в вашем файле views.py.
  2. .
  3. Обработайте параметры и логику GET-запроса в функции представления.
  4. Получите данные из базы данных или любого другого источника, если это необходимо.
  5. Передайте данные в шаблон для рендеринга.
  6. Создайте шаблон (HTML-файл) для отображения данных.
  7. Верните HTTP-ответ с отрендеренным шаблоном.

Вот пример реализации:

views.py:

from django.shortcuts import render
from .models import YourModel

def your_view(request):
    # Handle GET request logic
    if request.method == 'GET':
        # Retrieve data from the database
        data = YourModel.objects.all()
        # Pass data to the template for rendering
        return render(request, 'your_template.html', {'data': data})

ваш_шаблон.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Your Template</title>
</head>
<body>
    <h1>Your Data</h1>
    <ul>
        {% for item in data %}
            <li>{{ item }}</li>
        {% endfor %}
    </ul>
</body>
</html>

urls.py:

from django.urls import path
from . import views

urlpatterns = [
    path('your-url/', views.your_view, name='your_view'),
]
Вернуться на верх