Как реализовать рендеринг в контроллере представления после 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-запроса, вы обычно выполняете следующие шаги:
- Определите функцию представления Django в вашем файле views.py. .
- Обработайте параметры и логику GET-запроса в функции представления.
- Получите данные из базы данных или любого другого источника, если это необходимо.
- Передайте данные в шаблон для рендеринга.
- Создайте шаблон (HTML-файл) для отображения данных.
- Верните 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'),
]