Django管理面板MEDIA_URL和db url

时间:2014-12-23 12:27:49

标签: python django database hyperlink media-url

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

我已经完成了,但是我收到了一个奇怪的错误。它没有向我展示图像。

在数据库中,图像字段包含https://www.domain.ext/media/uploads/homepage/image_name.jpg,但在管理面板中,网址与此类似,就像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,我已经刷新了管理页面,看起来没问题,但是当我保存时,又是错误的另一次形式。

谁是如此友善地向我解释原因,以及我如何能够解决这个问题?

编辑:

Django版本是1.2.5

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

1 个答案:

答案 0 :(得分:0)

最后我遇到了问题!

问题出在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。

感谢所有人的帮助! :)

编辑:

祝大家圣诞快乐! :)