关于如何创建和使用Django的后台,可以参照详细介绍如何使用Django的后台管理Admin
在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’ 时,有关系。
当我们在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), # 配置后台管理界面下的 文件
]