Как загрузить мои медиафайлы в Django Framework?

#python #django #django-media

#python #django #django-media

Вопрос:

Я не могу загрузить свои медиафайлы. В URL-адресе я заметил, что вместо «медиа» появляется текст «курсы»

(http://127.0.0.1:8000 /**курс **/курсы/изображения/pythondev.png)

(http://127.0.0.1:8000 /**медиа **/курсы/изображения/pythondev.png)

settings.py

 STATIC_URL = '/static/'

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

MEDIA_URL = '/media/'

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
 

urls.py

 from django.contrib import admin
from django.urls import path, include

# Import settings to load image on DEBUG MODE
from django.conf import settings
from django.conf.urls.static import static

admin.autodiscover()

urlpatterns = [
 path('', include('core.urls')),
 path('cursos/', include('courses.urls')),
 path('admin/', admin.site.urls),
 ]

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

coursesurls.py

 from django.urls import path, include

from courses import views

app_name = 'courses'
 urlpatterns = [
 path('', views.index, name='index')
 ]
 

coursesview.py

 from django.shortcuts import render


# Create your views here.

from .models import Course


def index(request):
 courses = Course.objects.all()
 template_name = 'courses/index.html'
 context = {
  'courses': courses
 }
 return render(request, template_name, context)
 

coursesmodels.py

 from django.db import models

   
class CourseManager(models.Manager):

    def search(self, query):
        return self.get_queryset().filter(
            models.Q(name__icontains=query) |
            models.Q(description__icontains=query)
        )


class Course(models.Model):

    name = models.CharField('Nome', max_length=100)
    slug = models.SlugField('Atalho')
    description = models.TextField('Descrição', blank=True)
    start_date = models.DateField(
        'Data de Início', null=True, blank=True
    )
    image = models.ImageField(
        upload_to='courses/images', verbose_name='Imagem',
        null=True, blank=True
    )

    created_at = models.DateTimeField(
        'Criado em', auto_now_add=True
    )
    update_at = models.DateTimeField('Atualizado em', auto_now=True)

    objects = CourseManager()

    def __str__(self):
        return self.name

    class Meta:
        verbose_name = 'Curso'
        verbose_name_plural = 'Cursos'
        ordering = ['-name']
 

Обновленный файл приведен выше

Комментарии:

1. Пожалуйста, поделитесь моделью для сохранения медиафайлов

2. привет, друг, я обновил файл.

Ответ №1:

Вы можете использовать статический URL-адрес для ресурсов в шаблоне jinja2. Попробуйте https://realpython.com/primer-on-jinja-templating / ссылка.

Комментарии:

1. Я хотел бы использовать медиафайлы, которые находятся в базе данных при загрузке пользователем. Правильна ли моя конфигурация выше? Спасибо

Ответ №2:

Измените MEDIA_ROOT , как показано ниже

MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), 'media')