gpt4 book ai didi

javascript - 使用 Django 提供随机图像

转载 作者:行者123 更新时间:2023-11-28 18:41:28 25 4
gpt4 key购买 nike

我有大约。 100.000 张图片,我的目标是生成一个 Django 支持的网页,每次加载页面时随机显示其中一张图片(实际上它有点复杂,但这是我的最小示例)。我现在的做法如下:

  1. 我将所有 100.000 个文件放入我的应用程序的静态文件夹中。
  2. 我手动生成一个包含所有图像路径的数据库。
  3. URL 关联 View 随机选择数据库条目(即路径)并从模板生成页面。

我的 View 模板如下所示:

...
<body>
<H1>'Hello World' from the template!</H1>
Here's a random image: "{{rImage}}"<p>
<canvas class="stream" id="canvas" style="z-index: 1; outline: 1px solid red;" width=505px height=336px></canvas>
<script>
var canvas = document.getElementById("canvas");
var cxt = canvas.getContext("2d");

img = new Image();
img.onload = function(){};
img.src = "/static/rim/{{rImage}}";

cxt.drawImage(img,0,0,canvas.width,canvas.height);
</script>
</body>
...

{{rImage}} 是随机图像的路径。如您所见,我实际上是使用 Javascript 将图像绘制到 HTML5 Canvas 上。这是 Python 中相应的 Django View :

def index(request):
rImage = Images.objects.all()[random.randint(0, 100000)].relativeUrl
template = loader.get_template('rim/index.html')
context = RequestContext(request,{'rImage':rImage})
return HttpResponse(template.render(context))

虽然这确实有效,但我很确定我违反了一些基本的设计原则。以这种方式提供静态图像是一种好习惯吗?或者我应该将整个图像(而不仅仅是路径)直接添加到数据库中,例如使用 ImageField?正确的做法是什么?

最佳答案

如评论所述,ImageField 实际上并未将图像存储在数据库中,它具有指向文件系统中图像的链接,并生成正确的图像 url 以供在模板中使用。

您可以使用 rImage = Images.objects.order_by('?')[0] 获取随机图像,但请记住,根据您使用的数据库后端,它可能成本高昂且操作缓慢使用(例如 mysql)。然后您可以将图像对象传递给模板并使用 {{rImage.image_field.url}}(图像字段为您处理 url 生成,只需在您的项目设置中设置适当的值)

关于javascript - 使用 Django 提供随机图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25453432/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com