找不到 Django 图像 src

M1n*_*zwy 5 python django

\project_structure
-app
\project
  -settings.py
  -...
\picture
  -panda.jpg
Run Code Online (Sandbox Code Playgroud)

我已将图片上传到picture.

class Goods(models.Model):
    pic = models.ImageField(upload_to='picture')
Run Code Online (Sandbox Code Playgroud)

里面的数据databasepicture/panda.jpg

现在,我如何在 html 中显示它?

我用html写了这个:

<p>{{each.pic}}</p>
<img src='{{ each.pic.url }}' />
Run Code Online (Sandbox Code Playgroud)

浏览器中的源代码是这样的:

picture/panda.jpg
<img src='picture/panda.jpg' />
Run Code Online (Sandbox Code Playgroud)

图像链接到http://localhost:8000/my_sell/picture/panda.jpg。并且无法显示。

我怎样才能解决这个问题,我已经试过加载media_rootsettings.py无用。

val*_*lex 9

我没有检查这个,但几乎所有的代码都来自我的工作项目:)。

settings.py

MEDIA_URL = '/media/'
MEDIA_ROOT = (
    os.path.join(BASE_DIR, 'media')
)
Run Code Online (Sandbox Code Playgroud)

models

from django.core.files.storage import FileSystemStorage
from django.conf import settings


image_storage = FileSystemStorage(
    # Physical file location ROOT
    location=u'{0}/my_sell/'.format(settings.MEDIA_ROOT),
    # Url for file
    base_url=u'{0}my_sell/'.format(settings.MEDIA_URL),
)


def image_directory_path(instance, filename):
    # file will be uploaded to MEDIA_ROOT/my_sell/picture/<filename>
    return u'picture/{0}'.format(filename)


class Goods(models.Model):
    pic = models.ImageField(upload_to=image_directory_path, storage=image_storage)
Run Code Online (Sandbox Code Playgroud)

views

from django.shortcuts import render

def view_picture(request):
    c = dict()
    c['goods'] = Goods.objects.all()
    return render(request, 'template.html', c)
Run Code Online (Sandbox Code Playgroud)

templates

{% for product in goods %} 
    {% if product.pic %}    
        <img src="{{ product.pic.url }}">
    {% endif %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

编辑:不要忘记将 MEDIA_URL 添加到 rooturls.py

if settings.DEBUG
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Run Code Online (Sandbox Code Playgroud)