如何在Django Admin中进行文件上传和管理

2023-04-11 00:00:00 管理 如何在 文件上传

在Django中,可以使用Django Admin来管理文件上传和管理。

首先,在models.py中定义文件上传和管理的模型:

from django.db import models

class File(models.Model):
    name = models.CharField(max_length=255)
    file = models.FileField(upload_to='files/')

    def __str__(self):
        return self.name

其中,File模型包含两个字段:name用于存储文件名,file用于存储文件实际内容。file字段使用了FileField类型,并指定了上传文件存储的目录。

接下来,在admin.py中注册File模型,并指定文件上传和管理所需的操作:

from django.contrib import admin
from .models import File

class FileAdmin(admin.ModelAdmin):
    list_display = ('name', 'file_link')

    def file_link(self, obj):
        if obj.file:
            return "<a href='{0}'>{1}</a>".format(obj.file.url, obj.file.name)
        else:
            return "No attachment"

    file_link.allow_tags = True

admin.site.register(File, FileAdmin)

在这里,我们注册了File模型,并创建了FileAdmin类来指定文件上传和管理所需的操作。list_display定义模型在列表中的显示方式,其中包含了一个file_link函数,用于将文件名链接到实际存储的文件。file_link.allow_tags = True用于允许在列表中使用超链接。

最后,需要在项目的urls.py中添加以下代码,以便Django能够正确处理文件上传和管理:

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    ...
]

if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

这段代码将MEDIA_URL(即文件上传存储的URL)指向MEDIA_ROOT(即文件上传的实际存储路径),以便Django能够正确处理文件的上传和管理。

演示:以字符串“pidancode.com”、“皮蛋编程”作为文件名和文件内容,上传后在Django Admin中进行查看和管理。

  1. 在Django Admin中进入Files的添加页面,在“name”字段中输入“pidancode.com”,在“file”字段中选择“Choose File”并选择一个名为“pidancode.txt”的文件,然后点击“Save”按钮进行保存。

  2. 在Django Admin中可以看到刚刚保存的文件“pidancode.com”,文件名显示为“pidancode.txt”,通过点击链接可以打开该文件。

相关文章