Python Django媒体文件路径不正确,缺少目录

Python Django媒体文件路径不正确,缺少目录,python,django,django-models,Python,Django,Django Models,目前正在使用Django 1.9。 我的模型中的图像文件正在正确上载到 project\media\FILEPATH.jpg 但是,正在尝试使用不带\media的文件路径显示图像。例如,当我在浏览器中转到我的本地主机时,我得到一个404,因为Django的get请求正在查找: project\FILEPATH.jpg 如何让django使用\media\正确提供媒体文件 如有任何用途,请提供更多信息: settings.py: MEDIA_URL = '/media/' MEDIA_ROOT

目前正在使用Django 1.9。 我的模型中的图像文件正在正确上载到

project\media\FILEPATH.jpg

但是,正在尝试使用不带\media的文件路径显示图像。例如,当我在浏览器中转到我的本地主机时,我得到一个404,因为Django的get请求正在查找:

project\FILEPATH.jpg

如何让django使用\media\正确提供媒体文件


如有任何用途,请提供更多信息:
settings.py:

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.dirname(os.path.join(BASE_DIR, 'media'))
型号:
image=models.ImageField(上传到`media',blank='true')

project urls.py根据文档,我有以下URL模式:

static(settings.MEDIA\u URL,document\u root=settings.MEDIA\u root)

谢谢你的帮助

models.py

class Post(models.Model):
  ptype = models.ForeignKey('blog.Type', related_name='posts')
  title = models.CharField(max_length = 100)
  text = models.TextField()
  published_date = models.DateTimeField(default=timezone.now)

  def __str__(self):
    return self.title
class Image(models.Model):
  post = models.ForeignKey('blog.Post', related_name='images')
  image = models.ImageField(upload_to='media', blank='true')
views.py

class Posts(generic.ListView):
  model = Post
  context_object_name = 'posts'
  template_name = 'blog/posts.html'
posts.html

{% extends "blog/base.html" %}
{% block content %}

{% for post in posts %}
  <p><a href = "{% url 'blog:postdetail' pk=post.pk %}">{{post.title}}</a></p>
  <p>{{post.text}}</p>
  {% for image in post.image_set.all %}
    <img src="{{ image.image.url }}">
  {% endfor %}
{% endfor %}
{% endblock %}
{%extends“blog/base.html”%}
{%block content%}
{posts%%中的post为%s}

{{post.text}

{post.imageu set.all%中的图像为%s} {%endfor%} {%endfor%} {%endblock%}
正常

当您在模型上声明上载时,Django会自动检测到您的媒体路由为BASE_DIR/media,当您在模型上的upload_to中放入某个内容时,您会声明此图像必须保存在BASE_DIR/media/something上

示例:如果我想将用户的图像保存到媒体中,我必须在模型上进行此操作

  image = models.ImageField(upload_to='users/', blank='true')
我的图像将保存在localhost/media/users/FILEPATH.jpg上

media/之后的所有url都保存在“image”字段中,因此您的image字段只会显示“users/FILEPATH.jpg”,而不会显示localhost/media/

这就是为什么您需要在src中编写/media/的原因

 <img src="/media/{{ image.image }}">

如果将图像保存在名为“image”的字段中,则不需要.url


试试看。

发布html部分。是否您忘记将
.url
添加到
src
属性?例如:
@hanseffranz我为这个问题添加了更多的上下文。感谢您的回复。我可以想象,
{%for image in post.image\u set.all%}
中的关键字
image
可能会混淆Python,我可以简单地称之为
x
。使用
时,第一幅
图像
指的是四循环变量,而不是您定义的模型。或者至少我认为问题可能在那里。如果将脚循环中的
image
更改为
x
(仅在
src
部分中没有),会发生什么情况?如果不删除for循环,会发生什么情况?url正确吗?@Hanseffranz在对您的建议进行了进一步的修改后,我得到了要显示的图像,代码如下:{%for x in post.images.all%}{%endfor%}谢谢您的帮助!我真的不明白为什么会这样,显然我的媒体文件路径是/media/media/sav2017.jpg,而不仅仅是/media。但我会进一步调查。再次感谢。它至少现在起作用了,我只需要找出原因。是的,没问题,很高兴能帮助别人开始:)我明白你的意思。upload_to属性已经识别出媒体的位置,这就是为什么我无法找到我的路径,因为它正在搜索/media/media。我已经修改了我的上传目录,加入了一个子目录,这更有意义。谢谢你的帮助!!!!