Django 小实例S1 简易学生选课管理系统 第12节——CSS样式完善

点击查看教程总目录

作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师。

课程模块的逻辑代码到这里就已经全部完成了。

最后,我们完善下课程模块的样式。

1 - 优化课程主页布局

新建static/css/main.css如下

.main-content {
width: 900px;
margin: 0 auto;
background: #e6e6f0;
} .main-container {
width: 850px;
margin: 0 auto;
} .main-content h3{
width: 850px;
} .main-content .right-button{
float: right;
margin: 0 5px;
} .main-bar {
width: 850px;
height: 30px;
} .main-bar .search-form {
display: inline-block;
} .main-bar .button {
height: 30px;
vertical-align:top;
border:none;
color:#eee;
background:#4a2c98;
font-size: 16px;
border-radius: 5px;
} .main-bar .input{
width: 150px;
height: 24px;
margin: auto 10px;
vertical-align:top
} .main-bar .right-button {
float: right;
margin: 0 5px;
}

然后再在templates/course/nav.html中导入这个css文件,

即在</head>之前,添加如下一行代码:

<link href="{% static 'css/main.css' %}" rel="stylesheet">

由于课程模块所有模板都是继承的templates/course/nav.html,所以这个样式是对所有模板生效的。

不过这里样式会有一些问题,主页的中间内容面板没有纵向填满,如下图

而如果给.main-content设置height: 100%;导致了面板纵向超出,在只有一条记录的情况下页面还可以下滑,如下图

所以这里需要调整下导航条和主内容的position属性,改为fixed。

修改后的static/css/nav.css中的.nav属性如下

.nav {
background: #4a2c98;
position: fixed;
width: 100%;
color: #ccc;
z-index: 1;
}

修改后的static/css/main.css中的.main-content属性如下

.main-content {
width: 900px;
margin: 0 auto;
background: #e6e6f0;
min-height: 100%;
position: fixed;
left: 0;
right: 0;
padding: 60px 20px;
top: 0;
}

2 - 优化课程列表样式

课程模块中,有一些页面有表格(table)样式的列表,这里优化下列表样式。

新建static/css/list.css如下

table.item-list {
margin: 10px 0;
width: 850px;
} .item-list th,
.item-list td {
box-sizing: content-box;
width: fit-content;
padding: 3px;
text-align: left;
border-bottom: 1px solid #C0C0C0;
} .item-list tr:nth-child(even) {
background-color: #dfdfdf;
} .item-list th {
background-color: #9481c5;
} /* for course table col width*/
.item-list th.course-no,
.item-list td.course-no {
width: 70px;
} .item-list th.course-name,
.item-list td.course-name {
width: 150px;
} .item-list th.course-credit,
.item-list td.course-credit {
width: 40px;
} .item-list th.course-number,
.item-list td.course-number {
width: 70px;
} .item-list th.course-year,
.item-list td.course-year {
width: 50px;
} .item-list th.course-semester,
.item-list td.course-semester {
width: 30px;
} .item-list th.course-status,
.item-list td.course-status {
width: 100px;
} .item-list th.course-teacher,
.item-list td.course-teacher {
width: 70px;
} .item-list th.course-operation,
.item-list td.course-operation {
width: 150px;
} .item-list th.course-schedule,
.item-list td.course-schedule {
width: 200px
} .item-list td.course-schedule {
font-size: 10px;
} .item-list th.course-operation.student-course,
.item-list td.course-operation.student-course {
width: 80px;
} .item-list th.course-year-semester,
.item-list td.course-year-semester {
width: 70px;
}

需要导入这个css文件的模板有:

  • templates/course/student/home.html
  • templates/course/teacher/home.html
  • templates/course/teacher/course.html

老师和学生的主页有课程列表,所以需要导入这个css文件。

而老师的课程详情页里有选课的学生列表,所以也需要导入这个css文件。

导入方法为,在block块中(比如{% block content %}这行后面),添加下面一行代码:

<link href="{% static 'css/list.css' %}" rel="stylesheet">

3 - 优化表单样式

课程模块还有这几个使用了form表单的页面需要优化:

  • templates/course/teacher/create_course.html
  • templates/course/teacher/create_schedule.html
  • templates/course/teacher/score.html
  • templates/course/student/rating.html

新建static/css/form.css如下

.create-update-from {
margin: 10px;
} .create-update-from p{
padding: 5px;
} .create-update-from p:nth-child(even) {
background-color: #dfdfdf;
} .create-update-from p:nth-child(odd) {
background-color: #c8c8d2;
} .create-update-from p label{
display:inline-block;
width: 200px;
} .create-update-from .submit-button {
margin-top: 20px;
} .create-update-from .submit-button input {
width: 80px;
margin-right: 20px;
}

将该css文件导入上面说的需要的四个模板中,导入方法同本文第二部分,

即在block块中(比如{% block content %}这行后面),添加下面一行代码:

<link href="{% static 'css/form.css' %}" rel="stylesheet">

4 - 特殊处理学生课程详情页

学生课程详情页这里打算不像上面那样简单的展示,所以做了一个特殊的样式来展示学生课程详情信息。

static/css/details.css如下

ul.course-details {
margin: 20px;
list-style: none;
padding: 0 20px;
} li.course-detail {
min-height: 24px;
padding: 2px;
} li.course-detail .detail-name {
display: inline-block;
vertical-align: top;
width: 150px;
font-weight: bolder;
} li.course-detail span.course-schedules {
display: inline-block;
} ul.course-details li:nth-child(odd) {
background-color: #ccc;
} ul.course-details li:nth-child(even) {
background-color: #dfdfdf;
}

将该css文件导入templates/course/student/course.html模板中,导入方法同上,

即在block块中(比如{% block content %}这行后面),添加下面一行代码:

<link href="{% static 'css/details.css' %}" rel="stylesheet">

5 - static 处理

模板中导入css的link标签里,使用了模板语法中的static标签(tag),

所以使用了static标签的模板都要在开头导入这个标签。

虽然templates/course/nav.html开头有{% load static %},

但是继承它的子模板中如果用到了static标签,仍然需要再导入一遍。

导入方法为在模板文件的{% extends "course/nav.html" %}这一句后面,添加这样一行代码

{% load static %}

补充说明:模板文件中如果出现了继承语句{% extends "..." %}, 则该继承语句必须在模板的第一行。所以新增只能在这后面增添。

不过这样子一个一个增添{% load static %},还是太过麻烦,尤其是需要改动多个模板文件时。

除了一个一个模板里面添加这个,Django还给我们实现了一种方便快捷的手段:

在设置文件中修改,

在SSCMS/settings.py的TEMPLATES中,给其Django模板(一般是第一个)配置字典中的OPTIONS属性,添加这样一个配置关系:

'builtins': ['django.templatetags.static']

修改后的TEMPLATES设置如下

TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')]
,
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
'builtins': ['django.templatetags.static']
},
},
]

添加这个后,模板开头有没有{% load static %}都可以用static标签了。

不过最好去除掉无用代码,删掉所有之前模板中添加的{% load static %}。

5 - 完结

到这里,本项目就彻底完成了。

完成效果可见:

Django 小实例S1 简易学生选课管理系统 12 CSS样式完善的更多相关文章

  1. Django 小实例S1 简易学生选课管理系统 8 CSS样式优化

    Django 小实例S1 简易学生选课管理系统 第8节--CSS样式优化 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 前面的几节下来,用户模块基 ...

  2. Django 小实例S1 简易学生选课管理系统 11 学生课程业务实现

    Django 小实例S1 简易学生选课管理系统 第11节--学生课程业务实现 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 课程模块中,学生需要拥 ...

  3. Django 小实例S1 简易学生选课管理系统 10 老师课程业务实现

    Django 小实例S1 简易学生选课管理系统 第10节--老师课程业务实现 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 课程模块中,老师将要使 ...

  4. Django 小实例S1 简易学生选课管理系统 9 创建课程模型(model)

    Django 小实例S1 简易学生选课管理系统 第9节--创建课程模型(model) 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 对于课程模块, ...

  5. Django 小实例S1 简易学生选课管理系统 7 修改个人信息

    Django 小实例S1 简易学生选课管理系统 第7节--修改个人信息 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 用户模块除了注册登录之外,还 ...

  6. Django 小实例S1 简易学生选课管理系统 6 实现登录逻辑

    Django 小实例S1 简易学生选课管理系统 第6节--实现登录逻辑 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 1 业务逻辑 本教程第四节里 ...

  7. Django 小实例S1 简易学生选课管理系统 2 新建项目(project)并进行设置

    Django 小实例S1 简易学生选课管理系统 第2节--新建项目(project)并进行设置 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 0 ...

  8. Django 小实例S1 简易学生选课管理系统 3 创建用户模型(model)

    Django 小实例S1 简易学生选课管理系统 第3节--创建用户模型(model) 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 本文涉及到的新 ...

  9. Django 小实例S1 简易学生选课管理系统 4 实现登录页面

    Django 小实例S1 简易学生选课管理系统 第4节--实现登录页面 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 本文涉及到的新的额外知识点: ...

随机推荐

  1. Decorator装饰器模式个人理解

    对于装饰器模式,其主要是为了:在不改变本体特征的情况下,对其进行包装.装饰,目的是为了补充.扩展.增强其功能. 有三个原则: 不能改变本体的特征 要对本体的功能进行扩展 装饰器脱离了本体则没有任何含义 ...

  2. 深度学习--GAN学习笔记

    生成模型 WGAN Blog GAN 推荐学习网站 生成模型 什么是生成模型? GMM: 用来做聚类,(非监督学习) NB(朴素贝叶斯):(监督学习,可以用来做垃圾邮件分类) Logistics 回归 ...

  3. 关于Windows操作系统重定向

    在用C++做一个文件遍历的时候发现,当我遍历C:\Windows\system32文件夹时,获取到的文件数目和实际总是对不上.在通过他人帮助后了解到了重定向这个概念,我百度了一下,下面为粘贴内容. S ...

  4. Java基础之(三):IDEA的安装及破解

    IDEA的安装 IDEA官网:IDEA 点击IJ 找好操作系统,点击下载 双击打开,自己找个安装路径 勾选这两个即可 旗舰版破解及汉化 上面是个人社区版,是免费的,但是如果想要使用汉化版的,需要寻找插 ...

  5. 题解 [ZJOI2019]语言

    题目传送门 题目大意 给出一个 \(n\) 个点的树,现在有 \(m\) 次操作,每次可以选择一个链 \(s,t\),,然后这条链上每个点都会增加一个相同属性,问对于每一个点有与它相同属性的有多少个点 ...

  6. bzoj1407,洛谷2421 NOI2002荒岛野人

    题目大意: 克里特岛以野人群居而著称.岛上有排列成环行的M个山洞.这些山洞顺时针编号为1,2,-,M.岛上住着N个野人,一开始依次住在山洞C1,C2,-,CN中,以后每年,第i个野人会沿顺时针向前走P ...

  7. Dapr-简介及环境搭建

    一.Dapr是什么? Dapr 是一个可移植的.事件驱动的运行时,它使任何开发人员能够轻松构建出弹性的.无状态和有状态的应用程序,并可运行在云平台或边缘计算中,它同时也支持多种编程语言和开发框架. 在 ...

  8. CVE-2017-11882 漏洞分析总结 新手漏洞分析详细教程

    CVE-2017-11882分析总结 注: 这篇随笔记录了CVE-2017-11882漏洞分析的整个过程,并介绍了相关调试软件的使用 漏洞信息 CVE-2017-11882属于缓冲区溢出类型漏洞,产生 ...

  9. yum源安装nginx

    nginx使用yum源安装 安装步骤 使用yum源安装依赖 yum install yum-utils 配置nginx.repo的yum文件 vim /etc/yum.repos.d/nginx.re ...

  10. 树莓派4B学习札记

    防静电 树莓派比较容易被静电损坏,要做好以下预防措施 使用的时候不要用手去触摸PCB和针脚!特别是上电之后! 拿板卡的时候,要习惯性拿板卡的边缘 勤洗手,勤摸墙壁,释放身上的静电 系统安装 8GB以上 ...