Как сохранить изображение в django медиа root хранилище из python - PullRequest
0 голосов
/ 18 февраля 2020

Я пытаюсь сохранить свои изображения в папке мультимедиа root, которую я назвал изображениями в папке мультимедиа. Это мой код, и я хочу, чтобы, когда моя функция создавала снимок экрана, он сохранял снимки экрана в моей папке media root.

from django.shortcuts import render
from django.http import HttpResponse
from django.shortcuts import get_object_or_404,render,redirect
import time 
import random
from django.db import models
import pyautogui
import sys
from shots.models import pictures
from .models import pictures
from shots.forms.forms import DocumentForm

def button(request):
    import pyautogui
    myScreenshot = pyautogui.screenshot()
    storage=pictures.pictures2
    myScreenshot.save(storage)

    return render(request,'index.html')

def output(request):
    return HttpResponse("""Hello, world. You're at the polls index.
    your Screenshot should start now""")

Это мой models.py :

from django.db import models
import random


class pictures(models.Model):
    pub_date = models.DateTimeField('date published')
    pictures2 = models.ImageField(upload_to='pictures')

1 Ответ

0 голосов
/ 18 февраля 2020

Вы найдете этот ответ полезным.

Файлы для FileField и ImageField загружены относительно settings.MEDIA_ROOT и должны быть доступны с тем же относительным именем файла, добавленным к settings.MEDIA_URL.


Это, как говорится, если вы назвали свой settings.MEDIA_ROOT = 'pictures' и вы говорите своим моделям upload_to='pictures' Таким образом, файлы, загруженные django, в конечном итоге будут:

**/pictures/pictures/myScreenshot.png** 
import pyautogui

from django.shortcuts import render
from django.http import HttpResponse
from django.conf import settings

from .models import pictures


def button(request):
    myScreenshot = pyautogui.screenshot()

    """ 
    The path and filename are relative o where you execute this script.
    """
    filename = settings.MEDIA_ROOT+'pictures/myScreenshot.png'
    myScreenshot.save(filename)

    return render(request,'index.html')

Ваш models.py:

from django.db import models
import random


class pictures(models.Model):
    pub_date = models.DateTimeField('date published')
    pictures2 = models.ImageField(upload_to='pictures')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...