python - 如何在 Django 框架上加载我的媒体文件?
问题描述
我无法上传我的媒体文件。在 URL 中,我注意到出现了文本“课程”,而不是“媒体”
( http://127.0.0.1:8000/**cursos**/courses/images/pythondev.png )
( http://127.0.0.1:8000/**media**/courses/images/pythondev.png )
设置.py
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
网址.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
课程\urls.py
from django.urls import path, include
from courses import views
app_name = 'courses'
urlpatterns = [
path('', views.index, name='index')
]
课程\view.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)
课程\models.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']
更新的文件如下
解决方案
您可以在 jinja2 模板中使用静态 url 来访问资产。试试https://realpython.com/primer-on-jinja-templating/链接。
推荐阅读
- c# - 返回类型为“字符串”的函数返回一个可为空的字符串(即“字符串?”)
- firebase - Firebase Auth:如何使 admin.auth().importUsers 匹配 auth.createUserWithEmailAndPassword?
- git - 如何删除未推送的 git 提交,同时保留其他好的提交?
- javascript - 从 javascript 从数据库中检索用户
- python - 如何使用 Selenium 和 Python 在 web.whatsapp.com 中单击用户名
- kubernetes-dashboard - 无法登录 Kubernetes 仪表板?
- regex - sed 不是模式匹配
- javascript - 读取状态 React 时出现类型错误
- sql - 当 ARRAY_CONCAT 与 ARRAY_AGG 一起应用于非空数组时,为什么 BigQuery 会生成一个空数组?
- python-3.x - 我的助手的名称激活。当一个名称作为输入时,我如何创建一个函数来执行一段代码?