Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

688
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!