I am trying to upload some images in my app media folder. The problem is images uploaded successfully but not in media folder. Its creates another folder and store their. My code details are given bellow:
urls.py
from django.contrib import admin
from django.urls import path
from ssibdweb import views
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.index, name='index'),
]
if settings.DEBUG:
urlpatterns = static(settings.MEDIA_URL, document_root=settings.MEDIAFILES_DIRS)
settings.py
MEDIA_DIR = BASE_DIR / 'media'
MEDIA_URL = '/media/'
MEDIAFILES_DIRS = [
STATIC_DIR,
]
models.py
class BlogImage(models.Model):
id = models.AutoField(primary_key=True)
sub_id = models.ForeignKey(Subject, on_delete=models.CASCADE)
pic = models.ImageField(upload_to='blog/')
def __str__(self):
return str(self.id)
I am using following form for upload
<form method="POST" enctype="multipart/form-data" >
CodePudding user response:
You're trying to pass settings.MEDIAFILES_DIRS inside static() function which is not exists in django.conf settings you can check available constants of settings. In order to store your uploaded media content you've to set MEDIA_ROOT value like this
MEDIA_ROOT = BASE_DIR / 'media'
and inside your urls.py file change like this
if settings.DEBUG:
urlpatterns = static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
