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

标签 python django django-models

当前使用 Django 1.9。 我的模型中的图像文件已正确上传到

project\media\FILEPATH.jpg

但是,图像正尝试使用不带\media 的文件路径显示。例如,当我访问我的本地主机http://127.0.0.1:8000/media/FILEPATH.jpg时在我的浏览器中,我收到 404,因为 Django 的 get 请求正在寻找:

project\FILEPATH.jpg

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

<小时/>

更多信息(如果有任何用处):
设置.py:

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

型号:
image = models.ImageField(upload_to='media', Blank='true')

项目 urls.py 根据文档,我在 urlpatterns 之后有以下内容:

静态(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)

感谢您的帮助!

模型.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')

View .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 %}

最佳答案

好的

当你在模型上声明上传时,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 都保存在“图像”字段中,因此图像字段只会显示“users/FILEPATH.jpg”,而不是 localhost/media/

这就是为什么你需要在 src 中写入/media/

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

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

尝试一下。

关于python - Django媒体文件路径不正确,缺少目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45575386/

相关文章:

django - 同一个项目,多个客户 git 工作流程

python - 是否需要在模型字段中设置 max_length?

django - 与 django 的一对多关系

python - 为 super 用户以外的用户排除 Django 管理中的字段

Python 将 UUID 对象更改为字符串表示列表

python - 让 pip 与 git 和 github 存储库一起工作

django - 拦截我的 Django 应用程序中的每个请求

Python3 + MySql : Error loading MySQLdb module: No module named 'MySQLdb'

python - 如何暂停或删除 manim 中的声音?

python - 如何复制 Django 模型实例和所有相关数据