网站内容管理系统上传图片(一个学生管理系统模型-上海怡健医学()模型)
优采云 发布时间: 2022-03-07 20:16网站内容管理系统上传图片(一个学生管理系统模型-上海怡健医学()模型)
在上一篇文章中,我们已经初步搭建了一个学生管理系统的模型,现在让我们继续完善它。
1、上传图片/文件等资源
有时需要添加一些附件。比如新生刚进校,大家还不太熟悉。希望可以通过照片加深印象,方便教学管理。
首先,修改 demo/urls.py 文件,在 urlpatterns 中添加 static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT):
网址模式 = [
路径(r'',xadmin.site.urls),
]+ 静态(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)
然后在 demo/settings.py 文件中添加
# 指定上传位置
LOCATION = os.path.join('/', 'Users', 'babybus')
# 媒体文件根目录
MEDIA_ROOT= os.path.join(位置, '媒体')
ROOT_URL='/'MEDIA_URL='/media/'
上传图片需要获取路径,并在models.py文件中导入os模块
导入操作系统
在models.py文件的Students类中添加路径获取方法和models.ImageField字段:
defget_photo(self, filename):return os.path.join('photo', '%s_%s_%s_%s' % (self.class_name, self.name, self.id, os.path.splitext(filename) [1]))
photo = models.ImageField(verbose_name='photo', upload_to=get_photo, blank=True, null=True)
同时同步数据库操作,让页面有上传照片的选项,选择照片保存:
2、过滤、过滤、排序
1)过滤
今年学校录取率爆棚,生源特别好。要在数据库中找到对应的学生,就需要使用搜索功能。
修改adminx.py文件,在StudentAdmin类中添加:
search_fields = ('名字', )
如果我们想按班级或科目查找该班级或科目中的所有学生,方法是否相同?我们先试试:
search_fields = ('name', 'class_name', 'subjects',)
结果报错:
这里发生了什么?原来我们搜索的“class”和“subject”这两个字段是外键,另一个是多对多关系。Student 模型中这两个字段的名称不是其实际名称,应在字段后添加“__”。” 在添加外键或多对多关系的实际字段名之前的两个下划线:
search_fields = ('name', 'class_name__class_name', 'subjects__name',)
现在没事了。
2)过滤器:
如果只想查看学生表中男生或女生的信息,那么使用过滤功能:
修改adminx.py文件,在StudentAdmin类中添加:
list_filter = ('sex',)
3)排序:
如果您希望学生按字段的顺序排序,我们还需要在 adminx.py 文件中的 StudentsAdmin 类中添加排序选项:
# 排序
排序 = ('年龄', '姓名', )
# 倒序排序,前面加减号“-”,如按年龄倒序
排序 = ('-age',)
这意味着按年龄和姓名字段排序。
二、自定义网站信息
我们要在登录网站时显示站点名称,修改adminx.py文件,添加LoginViewAdmin类,注册:
从 xadmin.views.website 导入LoginViewclassLoginViewAdmin(LoginView):
title= '*敏*感*词*管理系统' xadmin.site.register(LoginView, LoginViewAdmin)
还可以继续修改,比如左上角的浏览器标题和页面标题以及页脚的版权信息:
from xadmin.views importCommAdminViewclassGlobalSetting(CommAdminView):#左上角和浏览器标题
site_title = '*敏*感*词*管理系统'