Django/React/Axios Попытка создать галерею изображений
У меня есть веб-приложение для группы выпускников, которое управляет событиями, стипендиями и т. д. У меня есть модели и веб-страницы для отображения всех деталей события, но я пытаюсь разрешить пользователю загружать несколько изображений для определенного события. Каждое событие имеет идентификатор и другие поля, а галерея имеет изображение и внешний ключ к идентификатору события, поэтому изображения с event_id 3 присваиваются событию с идентификатором 3 и т.д. На данный момент у меня есть все остальные поля для отображения с моими api урлами, потребляемыми axios (рисунки ниже). Я могу успешно загрузить все изображения в событие в бэкенде django. Я хотел бы отобразить эти изображения внизу справа под картинками события. С модалами для их увеличения я разберусь позже.
Страница подробностей моих событий.
Аксиос урлы
import axios from "axios";
const apiUrl = "/accounts/register/";
const loginUrl = "/accounts/login/"
const eventUrl= "/main/api/event/";
const eventGalleryUrl = "/main/api/gallery/?search=";
// Auth
export const signup = (user)=>{
return axios.post(apiUrl,user)
}
export const login = (user)=>{
return axios.post(loginUrl,user,{},{auth:user});
}
// Gallery
export const getGalleryByEventId = (id) => {
return axios.get(`/main/api/gallery/?search=${id}/`);
};
export const getGallery= ()=>{
return axios.get(`${eventUrl}`)
}
export const createGallery = (eventObject)=>{
return axios.post(eventUrl,eventObject);
}
export const getGalleryById = (id) => {
return axios.get(`${eventUrl}${id}/`);
};
export const deleteGalleryById = (id) => {
return axios.delete(`${eventUrl}${id}/`);
};
export const updateGalleryById = (id, eventObject) => {
return axios.put(`${eventUrl}${id}/`, eventObject);
};
// Events
export const getEvents = ()=>{
return axios.get(`${eventUrl}`)
}
export const createEvent = (eventObject)=>{
return axios.post(eventUrl,eventObject);
}
export const getEventById = (id)=>{
return axios.get(`${eventUrl}${id}/`);
}
export const deleteEventById = (id)=>{
return axios.delete(`${eventUrl}${id}/`);
}
export const updateEventById = (id, eventObject)=>{
return axios.put(`${eventUrl}${id}/`,eventObject);
}
Модели
from django.db import models
from datetime import date
from accounts.models import User
from .states import CONTIGUOUS_STATES
class Event(models.Model):
event_name = models.CharField(max_length=150)
date = models.CharField(max_length=40)
time = models.CharField(max_length=40,null=True, blank=True)
address_line = models.CharField(max_length=250, null=True, blank=True)
city = models.CharField(max_length=150, blank=True, null=True, default=None)
state = models.CharField(max_length=25, default=None)
zip_code = models.CharField(max_length=150)
contact_name = models.CharField(max_length=150, blank=True, null=True, default=None)
contact_number = models.CharField(max_length=150, blank=True, null=True, default=None)
contact_email = models.EmailField(max_length=150, blank=True, null=True, default=None)
banner_image = models.FileField(upload_to='media/Event Media', null=True, blank=True, default='EventBannerDefault.jpg')
description = models.TextField(max_length=2500)
# rsvpd_members = models.ManyToManyField(User, blank=True)
registration_fees = models.CharField(max_length=150, null=True, blank=True)
def __str__(self):
return(self.event_name)
class Gallery(models.Model):
images = models.FileField(upload_to='media/Event Media',)
event = models.ForeignKey(Event, default=None, on_delete=models.CASCADE)
def __str__(self):
return (self.images)