Django выберите случайное изображение - PullRequest
0 голосов
/ 22 марта 2020

Я пытаюсь выбрать случайное изображение из данного каталога.

Я нашел Random_Image на GitHub, и я пытаюсь использовать это.

Вот фрагмент инструкций: Фрагмент инструкций

Я относительно новичок в 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 sr c

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

Изображения расположены в каталог:

'Pickfeel/app_pickfeel/static/app_pickfeel/images'

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 22 марта 2020

Во-первых, если вы находитесь в режиме разработки, вы настраивали urlpatterns для stati c файлов ?: https://docs.djangoproject.com/en/3.0/howto/static-files/#serving -stati c -files-в процессе разработки

Second посмотрите на 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"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...