Django tinymce не загружает изображение в продакшене
У меня проблемы с загрузкой изображений в режиме производства с помощью django tinymce. Он загружает изображения в режиме разработки, но не в режиме производства. Было бы здорово, если бы кто-нибудь помог мне разобраться с этим.
settings.py
views.py
import os
from django.conf import settings
from django.http import JsonResponse
from django.utils import timezone
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def upload_image(request):
if request.method == "POST":
file_obj = request.FILES['file']
file_name_suffix = file_obj.name.split(".")[-1]
if file_name_suffix not in ["jpg", "png", "gif", "jpeg", ]:
return JsonResponse({"message": "Wrong file format"})
upload_time = timezone.now()
path = os.path.join(
settings.MEDIA_ROOT,
'tinymce',
str(upload_time.year),
str(upload_time.month),
str(upload_time.day)
)
# If there is no such path, create
if not os.path.exists(path):
os.makedirs(path)
file_path = os.path.join(path, file_obj.name)
file_url = f'{settings.MEDIA_URL}tinymce/{upload_time.year}/{upload_time.month}/{upload_time.day}/{file_obj.name}'
if os.path.exists(file_path):
return JsonResponse({
"message": "file already exist",
'location': file_url
})
with open(file_path, 'wb+') as f:
for chunk in file_obj.chunks():
f.write(chunk)
return JsonResponse({
'message': 'Image uploaded successfully',
'location': file_url
})
return JsonResponse({'detail': "Wrong request"})
urls.py
from django.contrib import admin
from django.urls import path, include
from django.contrib.auth import views as auth_views
from . import views as img_views
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('blog.urls' , namespace='blog')),
path('tinymce/', include('tinymce.urls')),
path('upload_image/', img_views.upload_image),
]
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root = settings.MEDIA_ROOT)
apache2.conf
Alias /static /home/omid/pypro/staticfiles
<Directory /home/omid/pypro/staticfiles>
Require all granted
</Directory>
Alias /media /home/omid/pypro/media/
<Directory /home/omid/pypro/media>
Require all granted
</Directory>
<Directory /home/omid/pypro/pypro>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
Когда я пытаюсь загрузить изображения в режиме производства, изображения, которые уже находятся в медиа-каталоге, могут быть загружены. Но новые изображения (не в медиа директории не загружаются).
Я получаю HTTP Error: 500
Я нашел это. Мне просто нужно было дать разрешение на чтение и запись в каталог мультимедиа