DJANGO - 404 медиа, когда значение отладки равно FALSE
У меня проблемы с django, и я не знаю, как их решить.
Я использую DJANGO 3.2.8 и Python 3.7.12
Я создаю приложение, которое позволяет пользователю загружать некоторые файлы в мою БД и когда администратор входит в систему, он может выбрать пользователя и нажать на ID, после чего отображается ID пользователя. Когда я включаю DEBUG = True, все в порядке, но когда я включаю DEBUG = False, у меня ошибка 404, когда я пытаюсь отобразить ID пользователя, и я не знаю, как исправить, я пробовал много вещей, но ничего не работает (я использую collectstatic для CSS и он работает, когда DEBUG = FALSE у меня есть все мои картинки ...)
Мой ID сохранен в папке media.
Настройка
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'staticfiles')
STATIC_URL = 'staticfiles/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
Модель
def path_and_rename(path, prefix):
def wrapper(instance, filename):
ext = filename.split('.')[-1]
project = "pid_%s" % (instance.name,)
# get filename
if instance.pk:
complaint_id = "cid_%s" % (uuid.uuid4().hex,)
filename = '{}.{}.{}.{}'.format(prefix, project, complaint_id, ext)
else:
# set filename as random string
random_id = "rid_%s" % (uuid.uuid4().hex,)
filename = '{}.{}.{}.{}'.format(prefix, project, random_id, ext)
# return the whole path to the file
return os.path.join(path, filename)
return wrapper
class Company(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
name = models.CharField(max_length=50)
id_card = models.FileField(upload_to=path_and_rename("id_card/", 'id_card'), null=True)
Шаблон
<div>
ID : <a href="{{ companys.id_card.url }}">click here</a>
</div>
Спасибо!
Я наконец-то нашел решение.
Я создаю поддоменное имя media.mywebsite.com
Затем я обновляю файл settings.py
MEDIA_ROOT = "/home/USER/public_html/media.mywebsite.com/"
MEDIA_URL = "https://media.mywebsite.com/"
И это работа! Возможно, не самый лучший способ, но это работа
Спасибо