Где хранить файлы для загрузки администратором в Django?

У меня есть несколько файлов примеров, которые я хочу предоставить в виде ссылки на скачивание всем администраторам. Они не зависят от модели или пользователя (кроме требования администрирования). Это файлы txt, и эти же файлы должны быть доступны всем админам. Я не могу найти ничего об этом в документации, или, возможно, я не знаю, что искать. Насколько я понимаю, только css, js и изображения являются статическими файлами, поэтому txt файлы должны быть в /media/?

Где я могу разместить эти файлы, чтобы только администраторы могли их скачать? Сейчас у меня есть жестко закодированная ссылка в моем пользовательском шаблоне администратора на /media/admin/examples/data_template.txt, но любой может получить эту ссылку. У меня есть эти настройки в settings.py:

STATIC_URL = '/static/'
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)
STATIC_ROOT = os.path.join(BASE_DIR, 'assets')
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

Edit: Я также попробовал поместить его в статическую директорию администратора, поэтому я загружаю его в шаблон с помощью {% load static %} и href="{% static 'admin/example_files/data_template.txt' %}" - но я все еще могу использовать ссылку загрузки, когда выхожу из системы. Я нахожусь в разработке, очевидно. Так и должно быть?

Итак, статические файлы - это файлы, которые обычно являются частью вашего кода или частью кода ваших зависимостей. Это могут быть файлы javascript и CSS, изображения для ваших веб-страниц и т.д.

Медиа файлы, однако, обычно являются файлами, которые загружаются пользователями или генерируются вашим приложением в течение жизни вашего Django проекта. Они, как правило, не хранятся в контроле исходников (как статические файлы). В принципе, все, что попадает в поле FileField, ImageField, классифицируется как медиа-хранилище.

В вашем случае вы можете создать модель с полем file и затем добавить все текстовые файлы в эту модель. Это сохранит эти файлы в корне медиа. Затем вы можете создать представление, в котором вы проверите, является ли пользователь администратором или нет, если да, то он сможет просматривать и скачивать эти файлы.

Вернуться на верх