#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')