Примечание: я начинающий в django / python
В настоящее время у меня есть класс User в models.py, который позволяет пользователю загружать изображение в мое приложение. Это поддерживается формой и шаблоном, которые позволяют загружать. Эта часть работает нормально. Проблема в том, что я получаю изображение в файловом поле в модели, но мне нужно поместить это изображение в мой файл EnhanceImage.py. Оказавшись там, я могу обработать его с помощью кода в этом сценарии, чтобы создать улучшенную версию с подушкой.
Как мне установить это иначе, чем то, что я делаю сейчас? Моя цель - получить переменную image из класса User в файл EnhanceImage.py, который будет использоваться для улучшения. Я хочу получить его в переменную UserUploadedImage в файле EnhanceImage.py
Я пробовал практически все решения, которые я могу найти в Интернете, чтобы передать переменную в новый файл.
Models.py
from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User
from stdimage.models import StdImageField
class User(models.Model):
name = models.CharField(max_length=100)
content = models.CharField(max_length=50, default='something')
email = models.EmailField(blank=True)
password = models.CharField(max_length=50)
image = StdImageField(upload_to='images/', variations={'thumbnail': {'width': 640, 'height': 480}}, default='default.jpg')
def __str__(self):
return self.name
ImageEnhance.py
Цель этого файла - взять UserUploadedImage и наложить контент, используя подушку.
from PIL import Image, ImageEnhance, ImageFont, ImageDraw
UserUploadedImage = I need the user uploaded image here!
foreground = Image.open("path/to/Image_to_overlay.jpg")
draw = ImageDraw.Draw(UserUploadedImage)
draw.rectangle([(-11, 420), (640, 515)], fill=(255,255,255), outline=(0,0,0))
UserUploadedImage.paste(foreground, (300, 385), foreground)
...
#more code below that isn't important for my question
Forms.py
from django.forms import ModelForm
from django import forms
from .models import User
class UserForm(forms.ModelForm):
class Meta:
model = User
fields = ['name', 'email', 'content', 'image']
Views.py
from django.shortcuts import render, redirect
from django.http import HttpResponse
from .models import User
from django.views.generic import ListView, CreateView # new
from django.urls import reverse_lazy #new
from .forms import UserForm # new
def home(request):
context = {
'users': User.objects.all()
}
return render(request, 'main/home.html', context)
class CreateUploadView(CreateView): # new
model = User
form_class = UserForm
template_name = 'main/photoupload.html'
success_url = reverse_lazy('home')