簡體   English   中英

如何從python將圖像保存在django媒體根存儲中

[英]How to save image in django media root storage from python

我正在嘗試將我的圖像保存到我在媒體文件夾中命名為圖片的媒體根文件夾中。 這是我的代碼,我希望每當我的函數制作屏幕截圖時,它都應該將屏幕截圖保存在我的媒體根文件夾中。

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')

你會發現這個答案很有幫助。

FileFieldImageField的文件是相對於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')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM