Django 1.9:无法查看上传的照片
Django 1.9: Unable to see uploaded photos
我上传了一些照片,但我无法在模板
中看到照片
我的模板
{% extends 'base.html' %}
{% load staticfiles %}
{% block content %}
<div class="row ">
<div class="col-md-8">
<h1>{{ object.title }}</h1>
{% if object.productimage_set.count > 0 %}
<div>
{% for img in object.productimage_set.all %}
{{ img.image.file }}
{{ img.image.url }}
<img class='img-responsive' src='{{ img.image.url }}' />
</div>
{% endfor %}
</div>
{% endif %}
<div class="lead">{{ object.description }}</div>
</div>
</div>
我的模型
class Product(models.Model):
title = models.CharField(max_length=120)
description = models.TextField(blank=True, null=True)
price = models.DecimalField(decimal_places=2, max_digits=20)
active = models.BooleanField(default=True)
def __unicode__(self): # def __str__(self):
return self.title
class ProductImage(models.Model):
product = models.ForeignKey(Product)
image = models.ImageField(upload_to='product/')
媒体设置
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static", "my_static"),
]
STATIC_ROOT = os.path.join(BASE_DIR, "static", "static_root")
STATIC_URL = '/media/media_root/'
MEDIA_ROOT = os.path.join(BASE_DIR, "static", "media_root")
我的urls
urlpatterns = [
url(r'^contact/', views.contact, name='contact'),
url(r'^$', views.ProductViewList.as_view(), name='ProductViewList'),
url(r'^(?P<pk>\d+)/$', views.ProductDetailView.as_view(), name='Product_Detail'),]
我的文件夹结构
在模板中 {{ img.image.url }} 给出 -> product/mp3.jpg。但是我还是看不到图片
控制台显示图像是从 http://127.0.0.1:8080/product/1/product/mp3.jpg
加载的,我猜 url 收集图像有一些问题,但不确定
非常感谢任何帮助....提前致谢
这里有一些来自 Django 的文档:https://docs.djangoproject.com/en/1.9/howto/static-files/#serving-files-uploaded-by-a-user-during-development
我更喜欢将我的媒体文件与我的静态文件分开,所以在开发过程中我实际上将我的文件存储在项目根目录中。以下片段使用项目根目录作为媒体位置,但如果您希望保留当前位置,可以通过将其更改为 static/media_root
轻松调整。
首先确保您已在 settings.py 文件中定义媒体根目录:
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
然后尝试将以下内容添加到项目的 urls.py 文件中:
from django.conf import settings
if settings.DEBUG:
urlpatterns += patterns('', (r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT, 'show_indexes': True}))
如果还没有,您应该将 MEDIA_URL 添加到 settings.py。
在您的情况下,MEDIA_URL 应该是 media_root
。我的图片链接都有/media/....jpg。
此外,您可以指定网址:
from django.conf import settings
if settings.DEBUG:
# static files (images, css, javascript, etc.)
urlpatterns += patterns('',
(r'^media/(?P<path>.*)$', 'django.views.static.serve', {
'document_root': settings.MEDIA_ROOT}))
我上传了一些照片,但我无法在模板
中看到照片我的模板
{% extends 'base.html' %}
{% load staticfiles %}
{% block content %}
<div class="row ">
<div class="col-md-8">
<h1>{{ object.title }}</h1>
{% if object.productimage_set.count > 0 %}
<div>
{% for img in object.productimage_set.all %}
{{ img.image.file }}
{{ img.image.url }}
<img class='img-responsive' src='{{ img.image.url }}' />
</div>
{% endfor %}
</div>
{% endif %}
<div class="lead">{{ object.description }}</div>
</div>
</div>
我的模型
class Product(models.Model):
title = models.CharField(max_length=120)
description = models.TextField(blank=True, null=True)
price = models.DecimalField(decimal_places=2, max_digits=20)
active = models.BooleanField(default=True)
def __unicode__(self): # def __str__(self):
return self.title
class ProductImage(models.Model):
product = models.ForeignKey(Product)
image = models.ImageField(upload_to='product/')
媒体设置
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static", "my_static"),
]
STATIC_ROOT = os.path.join(BASE_DIR, "static", "static_root")
STATIC_URL = '/media/media_root/'
MEDIA_ROOT = os.path.join(BASE_DIR, "static", "media_root")
我的urls
urlpatterns = [
url(r'^contact/', views.contact, name='contact'),
url(r'^$', views.ProductViewList.as_view(), name='ProductViewList'),
url(r'^(?P<pk>\d+)/$', views.ProductDetailView.as_view(), name='Product_Detail'),]
我的文件夹结构
在模板中 {{ img.image.url }} 给出 -> product/mp3.jpg。但是我还是看不到图片
控制台显示图像是从 http://127.0.0.1:8080/product/1/product/mp3.jpg
加载的,我猜 url 收集图像有一些问题,但不确定
非常感谢任何帮助....提前致谢
这里有一些来自 Django 的文档:https://docs.djangoproject.com/en/1.9/howto/static-files/#serving-files-uploaded-by-a-user-during-development
我更喜欢将我的媒体文件与我的静态文件分开,所以在开发过程中我实际上将我的文件存储在项目根目录中。以下片段使用项目根目录作为媒体位置,但如果您希望保留当前位置,可以通过将其更改为 static/media_root
轻松调整。
首先确保您已在 settings.py 文件中定义媒体根目录:
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
然后尝试将以下内容添加到项目的 urls.py 文件中:
from django.conf import settings
if settings.DEBUG:
urlpatterns += patterns('', (r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT, 'show_indexes': True}))
如果还没有,您应该将 MEDIA_URL 添加到 settings.py。
在您的情况下,MEDIA_URL 应该是 media_root
。我的图片链接都有/media/....jpg。
此外,您可以指定网址:
from django.conf import settings
if settings.DEBUG:
# static files (images, css, javascript, etc.)
urlpatterns += patterns('',
(r'^media/(?P<path>.*)$', 'django.views.static.serve', {
'document_root': settings.MEDIA_ROOT}))