gpt4 book ai didi

python - Admin FileField 当前 url 不正确

转载 作者:太空狗 更新时间:2023-10-29 22:26:49 24 4
gpt4 key购买 nike

在 Django 管理中,只要我有一个 FileField,编辑页面上就会有一个“当前”框,带有指向当前文件的超链接。但是,此链接附加到当前页面 url,因此导致 404,因为没有这样的页面,例如:http://127.0.0.1:8000/admin/Tank/asset/17/media/datasheet/13/09/05/copyright.html/
作为引用,文件的正确网址是:http://127.0.0.1:8000/media/datasheet/13/09/05/copyright.html

有什么方法可以解决默认管理布局中的这个问题吗?它影响我数据库中的每个 FileField,在我看来就像一个错误。我只是用错了吗?

最佳答案

设置.py

添加行:

import os
BASE_DIR = os.path.realpath(os.path.dirname(__file__))

替换行:

MEDIA_ROOT = ''
MEDIA_URL = ''

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR,os.pardir,'media')

这应该设置您的项目以从文件夹/your project directory/media/呈现您的媒体内容

网址.py

同时添加一行:

import settings

在您的网址格式中添加以下行:

url(r'^media/(?P<path>.*)$', 'django.views.static.serve',{'document_root': settings.MEDIA_ROOT, 'show_indexes': False}),

模型.py

在您的模型中添加以下行:

File = models.FileField('File',upload_to='./')

在模型中定义方法

def fileLink(self):
if self.File:
return '<a href="' + str(self.File.url) + '">' + 'NameOfFileGoesHere' + '</a>'
else:
return '<a href="''"></a>'
fileLink.allow_tags = True
fileLink.short_description = "File Link"

管理员.py

将字段fileLink用作只读字段,您也可以将其添加到您的list_display

例如

class FileAdmin(admin.ModelAdmin):
list_display = ['fileLink']
readonly_fields = ['fileLink']

关于python - Admin FileField 当前 url 不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18632566/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com