python - 无法使用 django 显示模型中的图像
问题描述
在 settings.py
MEDIA_ROOT = os.path.join(BASE_DIR,'pictures')
MEDIA_URL = '/pictures/'
在模型.py
class Campaign(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
# this is many to one relationship, on_deleting user, profile will also be deleted
campaign_title = models.CharField(max_length=200, blank=True)
campaign_image = models.ImageField(default="default_campaign.png",upload_to="campaign_pictures")
在views.py中
def landing_page(request):
campaigns = Campaign.objects.all().order_by('-id')
print(campaigns)
return render(request, 'core/landing_page.html',{'campaigns':campaigns})
在landing_page.html
{% for campaign in campaigns %}
<img src="{{campaign.campaign_image.url}}">
{% endfor %}
问题
- 如果文件名为 abc xyz.jpg,它会以 abc_xyz.jpg 格式保存到 /pictures/campaign_pictures
- 在 html 模板中,图像的 src 应该是 '/pictures/campaign_pictures/abc_xyz.jpg' 但它只显示 '/pictures/abc%20xyz.jpg'
解决方案
我想你错过了 urls.py 文件
from django.conf import settings
from django.conf.urls import url
from django.conf.urls.static import static
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
] + static(settings.MEDIA_URL, document_root = settings.MEDIA_ROOT)
也纠正它
campaign_image = models.ImageField(default="default_campaign.png",upload_to="campaign_pictures/")
推荐阅读
- python - ldap3 在 docker 容器中使用时“无法打开套接字”
- microsoft-graph-api - 尝试读取组文件时收到“拒绝访问”
- c# - 如何避免过多的 != null 检查
- typescript - 当 observable 满足条件时,RxJS 停止 foreach
- angular - 如何使用 Angular Material [mat-form-field] 向文本框插入值
- c# - 使用实体框架从数据库读取数据会导致对象的字段丢失
- php - $_SERVER 变量来识别请求来自哪里?
- javascript - 如何使用 .orderby() 按时间戳对 Firebase 数组中的项目进行排序
- prometheus - 正确检测 Prometheus 计数指标的变化
- sql - 将具有空值的新列添加到大表