【问题标题】:Django select a random imageDjango选择一个随机图像
【发布时间】:2020-07-03 05:38:09
【问题描述】:

我正在尝试从给定目录中选择一个随机图像。

我在 GitHub 上找到了Random_Image,我正在尝试使用它。

以下是说明的 sn-p: Snippet of Instructions

我对 Django 比较陌生,所以这似乎是一个愚蠢的问题,但我在这里做错了什么?


当我运行下面的代码时,我收到以下错误:

FileNotFoundError at /
[WinError 3] The system cannot find the path specified: 'app_pickfeel/static/app_pickfeel/app_pickfeel/images/9.jpg'

Random_Image.py

import os
import random
from django import template
from django.conf import settings
# module-level variable
register = template.Library()
@register.simple_tag
def random_image(image_dir):
try:
valid_extensions = settings.RANDOM_IMAGE_EXTENSIONS
except AttributeError:
valid_extensions = ['.jpg', '.jpeg', '.png', '.gif', ]
if image_dir:
rel_dir = image_dir
else:
rel_dir = settings.RANDOM_IMAGE_DIR
rand_dir = os.path.join(settings.MEDIA_ROOT, rel_dir)
files = [f for f in os.listdir(rand_dir) if os.path.splitext(f)[1]
in valid_extensions]
return os.path.join(rel_dir, random.choice(files))

Settings.py

INSTALLED_APPS = [

'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',

# template tags
'app_pickfeel.templatetags.random_Image'
]


MEDIA_ROOT = 'app_pickfeel/static/app_pickfeel/'
RANDOM_IMAGE_DIR = '/images/'
RANDOM_IMAGE_EXTENSIONS = ['.jpg','.jpeg','.png','.gif']
MEDIA_URL = '/images/'

img src

<img src="{{ MEDIA_URL}}{% random_image "app_pickfeel/images/" %}">

图片位于目录中:

'Pickfeel/app_pickfeel/static/app_pickfeel/images'

我们将不胜感激。

【问题讨论】:

  • 这是错字还是正确的目录:Pickfeel/app_pickfeel/static/aoo_pickfeel/images。你有 aoo_pickfeel 不是 app_pickfeel @Dom
  • 抱歉,确实是一个错字。我已经更新了错误。

标签: python django directory


【解决方案1】:

首先,如果您处于开发模式,您是否为静态文件配置了 urlpatterns?: https://docs.djangoproject.com/en/3.0/howto/static-files/#serving-static-files-during-development

再看错误url,找不到这个文件: 'app_pickfeel/static/app_pickfeel/app_pickfeel/images/9.jpg'

然后只是为了确定这是不是一个错字,你说图像位于这个目录中: 'Pickfeel/app_pickfeel/static/aoo_pickfeel/images'。

另一方面,你不需要这样做:

<img src="{{ MEDIA_URL}}{% random_image "app_pickfeel/images/" %}">

通过这样做,您将连接 MEDIA_URL 和“app_pickfeel/images/”,因此该目录将与错误中显示的一样。你已经有了

RANDOM_IMAGE_DIR = '/images/'

如果你确实想使用它应该这样:

<img src="{{ MEDIA_URL}}{% random_image "/images/" %}">

这与 RANDOM_IMAGE_DIR = '/images/' 相同,或者您可以将该文件夹的另一个子目录“app_pickfeel”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多