Как создать модель django со статическим файлом изображения
enter code here
class EncryptedMessage(models.Model):
image = models.ImageField(upload_to="images", blank=True)
def __str__(self):
return 'image: {}'.format(self.image)
Это моя модель django, мне нужно создать объект со статическим файлом изображения.
class EncryptedMessage(models.Model): image = models.ImageField(upload_to="images", blank=True)
def __str__(self):
return 'image: {}'.format(self.image)
Сначала зайдите в ваш settings.py и сделайте что-то вроде этого:
# Goes in the setting.py
STATIC_URL = '/static/'
MEDIA_URL = '/media/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
MEDIA_ROOT = os.path.join(BASE_DIR, 'static/media')
Затем вы связываете пути media и static в вашем основном urls.py для загрузки статических файлов и в определенное время сохраняете файлы в директории static и media.
#Your main urls.py
from django.contrib import admin
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('admin/', admin.site.urls),
]
if settings.DEBUG:
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Сначала вам нужно будет создать представление для обработки получения изображений из бэкенда.
from .models import EncryptedMessag
def my_view_for_image(request):
all_images = EncryptedMessag.objects.all()
ctx = {'all_images':all_images}
return render(request, 'Put your html here', ctx)
В своем шаблоне вы делаете примерно следующее:
# our template where the image will be shown.
# here we are looping to get all the objects in all_images
{% for photo in all_images %}
<div>
<img src="{{ photo.image.url }}" alt="">
{{ photo.name }}
</div>
{% endfor %}
@api_view(['POST'])
def encryptMessage(request):
serializer = MessageSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
imageFile = open(str(settings.BASE_DIR) +str(serializer.data['image1']), 'ab')
if serializer.data['image2'] != None:
imageFile.write(serializer.data['image2'].encode())
elif serializer.data['textMsg'] != None:
imageFile.write(serializer.data['textMsg'].encode())
else:
return Response("Invalid message")
encryptedMessage = EncryptedMessage.objects.create()
encryptedMessage.image = imageFile
encryptedMessageSerializer = EncryptedMessageSerializer(data = encryptedMessage, many=False)
if encryptedMessageSerializer.is_valid():
print(encryptedMessageSerializer.data)
encryptedMessageSerializer.save()
return Response("")
return Response("Invalid")
@api_view(['POST'])
def encryptMessage(request):
serializer = MessageSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
imageFile = open(str(settings.BASE_DIR) +str(serializer.data['image1']), 'ab')
if serializer.data['image2'] != None:
imageFile.write(serializer.data['image2'].encode())
elif serializer.data['textMsg'] != None:
imageFile.write(serializer.data['textMsg'].encode())
else:
return Response("Invalid message")
encryptedMessage = EncryptedMessage.objects.create()
encryptedMessage.image = imageFile
encryptedMessageSerializer = EncryptedMessageSerializer(data = encryptedMessage, many=False)
if encryptedMessageSerializer.is_valid():
print(encryptedMessageSerializer.data)
encryptedMessageSerializer.save()
return Response("")
return Response("Invalid")