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
Django后台上传文件并预览_第1张图片
依次输入:

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

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

createsuperuser

Django后台上传文件并预览_第2张图片
创建好账号,我们就可以使用这个来登录了。

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

runserver

Django后台上传文件并预览_第3张图片
打开浏览器在地址栏输入:http://127.0.0.1:8000/admin
Django后台上传文件并预览_第4张图片
输入之前创建的账号和密码,就可以登录进来了。然后点击增加。
Django后台上传文件并预览_第5张图片
选好一个文件,保存。
Django后台上传文件并预览_第6张图片
然后文件已经上传成功了,可以在项目目录下进行查看
Django后台上传文件并预览_第7张图片
项目目录的结构:
Django后台上传文件并预览_第8张图片

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

2、访问上传的文件

当我们在model.py中定义了字段为“models.FileField”的时候,可以成功上传,但是却无法访问,提示如下的信息,一直都找不到解决办法
Django后台上传文件并预览_第9张图片
然后被转向了如下的界面,还有警告信息。
Django后台上传文件并预览_第10张图片
看一下文件的指向的链接。127.0.0.1:8000 代表的是 app目录,但是Django生成的url并不是我们想要的,而上传的文件在 app下的static下。所以考虑写一个方法,来重定向到正确的url。
Django后台上传文件并预览_第11张图片
在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), # 配置后台管理界面下的 文件
]

配置好后,重启服务器,再来访问。任何文件类型都可以上传或访问了。
Django后台上传文件并预览_第12张图片

你可能感兴趣的:(Python)