【问题标题】:Static language to render images in loop - Upload through Django admin循环渲染图像的静态语言 - 通过 Django 管理员上传
【发布时间】:2018-07-13 16:29:01
【问题描述】:

我使用管理员上传了图片,但无法在模板中呈现它们。我错过了什么?

Settings.py

STATIC_URL = '/static/'

STATIC_DIRS = { os.path.join(BASE_DIR, "static"),
}

MEDIA_URL = '/media/'

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

模型.py

class Function(models.Model):
    name = models.CharField(max_length=50)
    fimage = models.ImageField(upload_to="images")
    def __unicode__(self):
        return "name{},id{}".format(self.name, self.id)

HTML

{% for function in functions %}
<a href="function_page/{{function.id}}">
<img id=function_menu_pic src="{{MEDIA_URL}}{{function.fimage.url}}"></a>
{% endfor %}

Views.py

def main(request):
   context = {
   "functions": Function.objects.all()
    }
return render (request, 'project/main.html', context)

网址.py

] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

当我上传文件时,它们将转到与 manage.py 处于同一级别的媒体文件。我不确定从那里路由是如何工作的。

我收到所有图片的这条消息:

Not Found: /media/images/lpo.png
[02/Feb/2018 09:54:01] "GET /media/images/1_ssOAG27.png HTTP/1.1" 404 2748

【问题讨论】:

    标签: django django-models django-templates


    【解决方案1】:

    删除img src中的{{MEDIA_URL}}并将引号"放入id..

    <img id="function_menu_pic" src="{{function.fimage.url}}">
    

    【讨论】:

    • 没有变化。我需要视图中的任何内容吗?
    • @dev_2018 您无需更改视图中的任何内容。只需尝试在MEDIA_ROOT 中给出绝对路径一次。
    • 谢谢!我听从了你的建议。我不知道如何设置绝对路径,但我找到了这个博客。 timmyomahony.com/blog/… 它运行良好。感谢您的提示。
    【解决方案2】:

    我花了很长时间来解决这个问题,所以我想分享一下我是如何解决它的:

    我按照上述 Astik 的建议对模板进行了更改。

    我重置了我的绝对路径。这个博客帮助很大。 Timothey Mahony blog

    `ENV_PATH = os.path.abspath(os.path.dirname(__file__))
    MEDIA_ROOT = os.path.join(ENV_PATH, 'media/')`
    

    我希望这能帮助你,如果你曾经被困在同一个地方!

    https://timmyomahony.com/blog/static-vs-media-and-root-vs-path-in-django/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-16
      • 2016-02-17
      • 1970-01-01
      • 1970-01-01
      • 2013-09-07
      相关资源
      最近更新 更多