【问题标题】:Django admin panel MEDIA_URL and db urlDjango 管理面板 MEDIA_URL 和 db url
【发布时间】:2014-12-23 12:27:49
【问题描述】:

几天前,我将一个网站从服务器移植到另一个服务器。现在我需要完成端口,更新新服务器中的数据库。

我已经完成了,但我遇到了一个奇怪的错误。它不显示图像。

在数据库中,图像字段包含https://www.domain.ext/media/uploads/homepage/image_name.jpg,但在管理面板中,url 不是那样的,就像MEDIA_URL(在 settings.py 文件中设置)和数据库中的图像字段,所以如果 @987654323 @ 设置为 https://www.domain.ext/media/ ,在图像字段的管理面板中我会看到 https://www.domain.ext/media/https://www.domain.ext/media/uploads/folder/image_name.jpg

我尝试手动修改db中的链接,只留下/uploads/folder/image_name.jpg,我刷新了管理页面,看起来还可以,但是当我保存时,又是一次错误的形式。

谁能这么好心地解释一下为什么,我该如何应对?

编辑:

Django 版本是 1.2.5

我看到的另一个问题是,如果MEDIA_URL 中有http,则行为与我解释的相同。如果有 https ,则 url 变为 /https:/www. ...etc... 。 对于后者,我尝试在MEDIA_URL 字符串之前放置一个u,例如MEDIA_URL = u"text",但它不起作用。

【问题讨论】:

  • 你是如何创建/编辑这些对象的?
  • 从数据库中,您认为这可能是问题所在吗?
  • 我不知道“来自数据库”是什么意思。你到底在做什么?您最初是如何创建它们的?
  • 最初它们是使用 Django 管理面板创建的。
  • @DanielRoseman :您认为可以从管理面板中排除MEDIA_URL,仅针对某些元素吗?或者,或者,我如何告诉 Django“这些 url 已经包含 MEDIA_URL,不需要添加它”?

标签: python django database hyperlink media-url


【解决方案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

我只是在有http 的地方添加了一个s,所以现在它是https,它可以工作。 它在数据库中写入正确的内容,并以正确的方式呈现 url。

感谢大家的帮助! :)

编辑:

祝大家圣诞快乐! :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-16
    • 2011-07-27
    • 2023-01-09
    相关资源
    最近更新 更多