Административная панель Django MEDIA_URL и URL-адрес базы данных
Я портировал веб-сайт с сервера на несколько дней назад. Теперь мне нужно завершить порт, обновив базу данных на новом сервере.
Я сделал это, но я получаю странную ошибку. Это не показывает мне изображения.
В базе данных поле изображения содержит https://www.domain.ext/media/uploads/homepage/image_name.jpg
но в админке URL не такой, как MEDIA_URL
(устанавливается в файле settings.py) и поле изображения из базы данных, так что если MEDIA_URL
настроен как https://www.domain.ext/media/
, в админке в поле изображения посмотрю https://www.domain.ext/media/https://www.domain.ext/media/uploads/folder/image_name.jpg
,
Я пытался вручную изменить ссылку в БД, оставляя только /uploads/folder/image_name.jpg
Я обновил страницу администратора, и она выглядела нормально, но когда я сохранил, это был другой раз в неправильной форме.
Кто так любезно объяснит мне, почему и как я могу справиться с этим?
РЕДАКТИРОВАТЬ:
Джанго версия 1.2.5
Другая проблема, которую я видел, заключается в том, что если есть http
в MEDIA_URL
поведение такое же, как я объяснил. Если там есть https
URL стал /https:/www. ...etc...
, Для этого последнего я попытался поставить u
перед MEDIA_URL
строка, как MEDIA_URL = u"text"
но это не сработало.
1 ответ
Наконец-то у меня возникла проблема!
Проблема была в filebrowser
модуль.
В filebrowser/functions.py
есть метод с именем url_join
это было определено как:
def url_join(*args):
"""
URL join routine.
"""
if args[0].startswith("http://"):
url = "http://"
else:
url = "/"
for arg in args:
arg = arg.replace("\\", "/")
arg_split = arg.split("/")
for elem in arg_split:
if elem != "" and elem != "http:":
url = url + elem + "/"
# remove trailing slash for filenames
if os.path.splitext(args[-1])[1]:
url = url.rstrip("/")
return url
Я просто добавил s
где есть http
так что теперь это https
и это работает. Он пишет правильную вещь в БД, а также правильно отображает URL.
Спасибо всем за помощь!:)
РЕДАКТИРОВАТЬ:
С Рождеством всех!:)