Django后台上传文件并预览

关于如何创建和使用Django的后台,可以参照详细介绍如何使用Django的后台管理Admin

1、上传文件

在model.py文件中,定义一个类

class Logfile(models.Model):
    file = models.FileField(u'文件', upload_to='app/static', null=False, blank=False)
    file_name = models.CharField(u'文件名称', max_length=50, default='logfile_name', null=False)
    create_time = models.DateTimeField(u'创建时间', null=False)
    host_ip = models.CharField(u'主机IP', max_length=50, default='127.0.0.1', null=False)
    comment = models.CharField(u'备注说明', max_length=100, null=False)
    isanalyse = models.BooleanField(u'是否分析', default='0', null=False)

然后在admin.py文件,注册该类

from .models import *  # 记得导包

@admin.register(Logfile)
class BlogTypeLogfile(admin.ModelAdmin):
    # 每页显示为10条 
    list_per_page = 10    
    # 在后台页面显示的字段
    list_display = ('id', 'file', 'file_name', 'create_time', 'host_ip', 'comment', 'isanalyse')

菜单栏 Tools → Run manage.py Task
在这里插入图片描述
依次输入:

manage.py@tutorial02 > makemigrations
...
manage.py@tutorial02 > migrate
...

再来创建一个超级用户,来登录Django管理的后台,输入下面命令,按照提示输入即可。

createsuperuser

在这里插入图片描述
创建好账号,我们就可以使用这个来登录了。

可以点击右上角的运行,也可以输入

runserver

在这里插入图片描述
打开浏览器在地址栏输入:http://127.0.0.1:8000/admin
在这里插入图片描述
输入之前创建的账号和密码,就可以登录进来了。然后点击增加。
在这里插入图片描述
选好一个文件,保存。
在这里插入图片描述
然后文件已经上传成功了,可以在项目目录下进行查看
在这里插入图片描述
项目目录的结构:
在这里插入图片描述

到这里,已经成功将文件上传了。注意:文件上传的位置和在定义 upload_to=‘app/static’ 时,有关系。

2、访问上传的文件

当我们在model.py中定义了字段为“models.FileField”的时候,可以成功上传,但是却无法访问,提示如下的信息,一直都找不到解决办法
在这里插入图片描述
然后被转向了如下的界面,还有警告信息。
在这里插入图片描述
看一下文件的指向的链接。127.0.0.1:8000 代表的是 app目录,但是Django生成的url并不是我们想要的,而上传的文件在 app下的static下。所以考虑写一个方法,来重定向到正确的url。
在这里插入图片描述
在views.py文件,编写方法:

from django.shortcuts import redirect

def get_logfile(request):
    # 进行字符串切割,取文件的名字。  -1参数代表 数组的最后一个
    filename = request.path.split('/')[-1]
    return redirect('http://127.0.0.1:8000/static' + '/' + filename)

在项目目录下的urls.py文件,这是项目的 根路由文件,添加下面路由:

from app import views

urlpatterns = [
    url('admin/', admin.site.urls),
    url(r'admin/app/logfile/app', views.get_logfile), # 配置后台管理界面下的 文件
]

配置好后,重启服务器,再来访问。任何文件类型都可以上传或访问了。
在这里插入图片描述

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值