Раздел django image uploaded не отображается в production

Я пытался загрузить изображение из админки в продакшене, но оно не отображается и не сохраняется в static/images, но раньше работало при работе в local. Однако мои статические изображения загружаются, а также те, которые я сохранил в разработке, также отображаются, но при добавлении новых изображений они не добавляются в статические файлы.

Моя модель:

class Gallery(models.Model):
    title = models.CharField(max_length=150)
    image = models.ImageField(upload_to='images/',null=True,default="avatar.svg")
    updated = models.DateTimeField(auto_now=True)
    created = models.DateTimeField(auto_now_add=True)
    
    def __str__(self):
        return self.title

Urls.py

from django.contrib import admin
from django.urls import path,include
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('base.urls'))
]

urlpatterns +=static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)

Галерея .html

 {% for gallery in gallerys %}
            <!-- ITEM 1 -->
            <div class="col-xs-6 col-md-3">
              <div class="box-gallery">
                <a href="{{gallery.image.url}}" title="Gallery #1">
                  <img src="{{gallery.image.url}}" alt="" class="img-fluid" />
                  <div class="project-info">
                    <div class="project-icon">
                      <span class="fa fa-search"></span>
                    </div>
                  </div>
                </a>
              </div>
            </div>
            {% endfor %}

Settings.py здесь я загрузил только необходимые

BASE_DIR = Path(__file__).resolve().parent.parent

STATIC_URL = '/static/'
AUTH_USER_MODEL = 'base.NewUser'


STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), "static/")


MEDIA_URL = '/images/'

MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), "/static/images")

DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'

views.py

def gallery(request):
    gallerys = Gallery.objects.all()
    context = {'gallerys':gallerys}
    return render(request, 'base/gallery.html',context)

я что-то упустил? Заранее спасибо

Способ хранения изображений в статической папке.

Сделайте следующее:

views.py:

 def gallery(request):
        if request.method == 'POST':
           form = YourForm(request.POST, request.FILES)
           if form.is_valid():
              handle_uploaded_file(request.FILES['image'])
              model_instance = form.save()
              model_instance.save()
           else:
              form = YourForm()
        gallerys = Gallery.objects.all()
        context = {'gallerys':gallerys}
        return render(request, 'base/gallery.html',context)

def handle_uploaded_file(f):  
    with open('static/images/'+f.name, 'wb+') as destination:  
        for chunk in f.chunks():  
            destination.write(chunk)

settings.py:

STATIC_URL = 'static/'
STATIC_ROOT=os.path.join(BASE_DIR,'static')

urls.py:

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('base.urls'))
]+static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)+static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)

Это способ, которым вы можете хранить статические файлы. Надеюсь, это может быть вам полезно

Вернуться на верх