Python Django图像(媒体)路径don';无法在模板中正确显示

Python Django图像(媒体)路径don';无法在模板中正确显示,python,django,django-models,django-templates,imagefield,Python,Django,Django Models,Django Templates,Imagefield,在我的项目中,我将媒体文件夹设置为: 设置.py MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'media') url.py urlpatterns = [ .... ]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 然后在my models.py中,我创建了一个类似这样的类: class PD_Pictures(models.Mod

在我的项目中,我将媒体文件夹设置为:

设置.py

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
url.py

urlpatterns = [
    ....
]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
然后在my models.py中,我创建了一个类似这样的类:

class PD_Pictures(models.Model):
    pic_IDmod = models.ForeignKey(PD_Models, related_name='modello')
    pic_image = models.ImageField()
    pic_descr = models.CharField(max_length=50)

 def __str__(self):
    return self.pic_descr
此时,在
views.py中的函数中,我提取了与
PD\u Picture
相关的所有db值:

prod_img = PD_Pictures.objects.all()
.....
return render(
    request,
    'base_catalog.html',
    {
        'bike_mod': bike_models,
        'prod_img': prod_img,
        'cat_list': cat_list,
        'menu_list': menu_list['menu'],
        'pcontent': menu_list['cont'],
        'form': c_form
    },
    context
)
在我的模板中,我将显示相关图像:

{% for pic in prod_img %}
    <div class="4u">
        <span class="image fit"
            <img src="{{ pic.pic_image }}" alt="" />
        </span>
    </div>
{% endfor %}
{%用于产品中的pic\u img%}

你能把它做成你的模板,看看给出了什么路径吗

{% for pic in prod_img %}
  <p>{{ pic.pic_image }</p>
{% endfor %}
{%用于产品中的pic\u img%}
{{pic.pic_image}

{%endfor%}
您可以将其放入模板中,并查看给出的路径吗

{% for pic in prod_img %}
  <p>{{ pic.pic_image }</p>
{% endfor %}
{%用于产品中的pic\u img%}
{{pic.pic_image}

{%endfor%}
就这样试试吧

{%用于产品中的pic\u img%}
{%endfor%}

就这样试试吧

{%用于产品中的pic\u img%}

{%endfor%}

来自django官方文件:

FieldFile.url 一个只读属性,通过调用基础存储类的URL()方法来访问文件的相对URL

如果您尝试在模板{{pic.pic_image}中打印,您将收到db字段值,而使用{{pic.pic_image.url}时,将调用来自django.core.files.storage.storage的url()方法,并调用您的基本设置
从django官方文件看似乎是正确的

FieldFile.url 一个只读属性,通过调用基础存储类的URL()方法来访问文件的相对URL

如果您尝试在模板{{pic.pic_image}中打印,您将收到db字段值,而使用{{pic.pic_image.url}时,将调用来自django.core.files.storage.storage的url()方法,并调用您的基本设置
似乎是正确的

pic.pic_image.url
将是媒体的url
pic.pic_image.url
将是媒体的url关于为什么解决这个问题的一些文字或评论会使它成为一个更好的答案,因为{%pic.pic_image.url%}将返回图像的url和
src
属性需要imagehi的url,pic.pic_图像和pic.pic_图像的url返回相同的路径“pic1.jpg”,而不是media/pic1.jpg如果您在开发服务器上(即使用python manage.py运行服务器),则此路径应该有效。如果您在实时服务器上运行它,则需要检查您的设置以正确提供静态文件-这不是django处理的,而是由您安装的Web服务器处理的,或者您可以尝试更改django.conf中的URL
,从django.conf.urls导入设置。静态导入静态urlpatterns=模式(“”,#…您的URLconf的其余部分放在这里…+静态(settings.MEDIA_URL,document_root=settings.MEDIA_root)
一些单词或注释,说明为什么这样解决问题会使它成为一个更好的答案,因为{%pic.pic_image.URL%}将返回图像的url和
src
属性需要imagehi的url,pic.pic_图像和pic.pic_图像的url返回相同的路径“pic1.jpg”,而不是media/pic1.jpg如果您在开发服务器上(即使用python manage.py运行服务器),则此路径应该有效。如果您在实时服务器上运行它,则需要检查您的设置以正确提供静态文件-这不是django处理的,而是由您安装的Web服务器处理的,或者您可以尝试更改django.conf中的URL
,从django.conf.urls导入设置。静态导入静态urlpatterns=模式(“”,#…URLconf的其余部分放在这里…)+static(settings.MEDIA_URL,document_root=settings.MEDIA_root)
Hi,它返回'pin1.jpg',但物理上在127.0.0.1:8000/MEDIA/pic1.jpgHi中,它返回'pin1.jpg',但物理上在127.0.0.1:8000/MEDIA/pic1.jpg中