管理文件字段当前 url 不正确

2024-05-09

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

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


设置.py

添加以下行:

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

替换行:

MEDIA_ROOT = ''
MEDIA_URL = ''

with

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

这应该设置您的项目以渲染文件夹 /您的项目目录/media/ 中的媒体内容

urls.py

还添加行:

import settings

在您的 url 模式中添加以下行:

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"

admin.py

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

eg

class FileAdmin(admin.ModelAdmin):
    list_display = ['fileLink']
    readonly_fields = ['fileLink']
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

管理文件字段当前 url 不正确 的相关文章

随机推荐