Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

691
Visualizações
Django MEDIA_ROOT, MEDIA_URL, etc.

Esta es la primera vez que uso MEDIA_ROOT/MEDIA_URL y la configuración me confunde un poco. Tengo un formulario de carga de imágenes que guarda la imagen original más una copia redimensionada. Quiero guardar ambas imágenes en mi carpeta MEDIA, pero separarlas. Estructura actual:

 project/ ----apps/ --------appOne/ ------------static/ ------------templates/ ------------__init__.py ------------models.py ------------urls.py ------------views.py --------__init__.py/ ----MEDIA/ ----project/ --------__init__.py --------settings.py --------urls.py ----manage.py

Me gustaría guardar la imagen cargada original en MEDIA/ y la imagen redimensionada en una carpeta dentro de la carpeta MEDIA, como MEDIA/media/. En este momento, está anidando 3 veces:

 original image goes to ---> MEDIA/media/ resized image goes to ---> MEDIA/media/media

Estoy casi seguro de que tengo la configuración incorrecta, pero he estado jugando con ella durante demasiado tiempo y nada funciona. Parece que cada tutorial configura las cosas de manera diferente y no estoy seguro de cuál es la estructura preferida o por qué mi configuración actual no funciona como esperaba.

Aquí está mi configuración.py:

 MEDIA_ROOT = os.path.join(BASE_DIR,'MEDIA') MEDIA_URL = "media/"

modelos.py:

 from django.conf import settings from smartfields import fields from smartfields.dependencies import FileDependency from smartfields.processors import ImageProcessor class Image(models.Model): client = models.ForeignKey(Client, null=True, blank=True) model_pic = fields.ImageField(upload_to=settings.MEDIA_URL, dependencies=[ FileDependency(processor=ImageProcessor( format='PNG', scale={'max_width': 500, 'max_height': 500})) ])

vistas.py:

 def upload(request): form = ImageUploadForm(request.POST, request.FILES) if form.is_valid(): client = Client.objects.get(id=request.session['id']) image = Image.objects.create(client=client, model_pic=form.cleaned_data['image']) return redirect(reverse('cphh:gallery')) def show_images(request): context = { 'images': Image.objects.all().order_by('-created_at'), 'media_url': settings.MEDIA_URL, } return render(request,'cphh/gallery.html', context)

Las imágenes cargadas anidadas triples se representan correctamente en mi plantilla:

 {% for image in images %} <img class="gallery-image" src="{{media_url}}{{ image.model_pic }}" {% endfor %}
about 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Según la documentación

MEDIA_ROOT es la ruta absoluta del sistema de archivos al directorio que contendrá los archivos subidos por el usuario.

Su código que envía las imágenes cargadas a la raíz debe tener settings.MEDIA_ROOT/<sub-folder> en lugar de settings.MEDIA_URL

MEDIA_URL , por otro lado, es un marcador de posición para la url que un cliente debe presionar para acceder a sus medios. Esto es útil cuando no desea mantener sus medios en su sistema de archivos local, sino en un almacenamiento externo como amazon s3.

El uso {{MEDIA_URL}} en sus plantillas le brinda una buena manera de no codificar la ubicación final de los medios.

about 4 years ago · Santiago Trujillo Relatório

0

en primer lugar en la configuración.py MEDIA_URL debe ser así:

 MEDIA_URL = "/media/"

Luego elimine la carpeta MEDIA . Solo la carpeta multimedia es suficiente. y también si necesita miniaturas para sus imágenes cargadas, puede usar el paquete Django easy_thumbnails para esto

about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda