先把主页做了。基本上就拿原来的模板改改就行。反正还是非前后端交互项目,逻辑不会太复杂。
这次的样式库还是用Bootstrap吧,确实好用,兼容性也优秀。上次写的FMS-java用的5.0测试版,这次就用最新的5.2.3版了。
创建dashboard应用
这个应用用来展示进入系统的默认页面,以及主界面。
可以直接使用命令行:
$ python manage.py startapp blog
然后在settings.py中注册新应用:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'dashboard.apps.DashboardConfig',
]
由于这个应用仅仅用来展示默认页面和主界面,所以没有模型和表单,只放一些页面。
编写view和设置URL
一般Django开发是这样一个循环:
1 编写模型=数据表
2 创建模板
3 创建视图
4 创建URL映射
我们这里没有模型,所以直接从视图开始。
创建模板
Django的模板规则可以看这里。
一般来说,我们在每个app的目录下创建一个templates目录,在其中创建一个和这个app名称相同的目录,其下再组织我们的模板。这是因为最后打包发布的时候,所有的静态文件会按照这种组织方式收集到项目根目录下的templates目录。
这里就按其所说,创建home_page.html如下:
# FMS_HIGHLY\dashboard\templates\dashboard
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<p>这是首页</p>
</body>
</html>
创建视图
这里创建一个非常简单的视图:
def home_page(request):
return render(request, 'dashboard/home_page.html')
由于前边的设置,Django自动加上了templates这个目录前缀,所以render函数的页面就不用加上templates了,直接写后边的目录和文件名称即可。
配置URL
这也是Django的传统艺能了。分为两层,一层是主URL的转发,一层是
应用里URL的对应视图的分发。
from django.urls import path
from . import views
app_name = 'dashboard'
urlpatterns = [
path('/', views.home_page, name='home_page'),
]
这个很简单,都是套路了,先设置应用名称一致,然后设置路径,这里是空,就是匹配默认进来的访问路径,视图是刚才编写的视图,名称这里记得起好,一般与视图函数名称相同。
之后在主URL中更新:
urlpatterns = [
path('', include('dashboard.urls', namespace='dashboard')),
path('admin/', admin.site.urls),
]
这表示默认访问直接转发到dahsboard应用的urls.py中进行匹配再处理。
编写页面
已经决定用layUI库,那么这里就需要先确定静态文件存放的位置。
bootstrap库的存放
到Bootstrap官网下载回来,解压缩之后,将其中的bootstrap.bundle.min.js和bootstrap.min.css复制一下,在项目根目录创建static目录,再分别创建css和js目录,复制到其中。这里还需要popper库,可以到BootCDN下载回来,我的版本是2.11.8(bootstrap.bundle.js
中包含popper.js
,可以直接使用这个js文件)。
这是因为setttings.py中配置了静态文件的路径,在模板中就可以将其引入。现在实验一下,实际纯粹的外部库无需如此,基本上都通过CDN来引入,但还是要了解一下。
由于基础的样式库是所有应用的模板都要用到的静态资源,没有必要在每个应用里存放一份,这里修改settings.py,添加如下内容:
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static') # 此‘static’和创建的静态文件名称一致即可。
]
这是指当找不到静态文件时,先从程序的根目录下的static中寻找该静态文件。
重新启动服务器,此时访问:
http://127.0.0.1:8000/static/bootstrap.min.css
就可以访问到静态文件,说明配置好了。
修改页面
修改之前那个简单的主页,引入bootstrap,并实际随便写一些东西看看:
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
<link href="{% static 'css/bootstrap.min.css' %}" rel="stylesheet"> <meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script src="{% static 'js/bootstrap.bundle.js' %}"></script>
</body>
</html>
在Django模板中,使用{load static}
搭配{static}
来从静态文件路径中引入静态文件,此时就做好了编写页面的准备了。
编写正式的页面
现在就可以使用Bootstrap来编写页面了。由于有之前的页面做辅助,所以写起来倒不是很困难,就是页面上使用的图片还是要在静态文件里创建好img目录,然后放在其中并仔细引用才行。
这里类似以前的Thymeleaf,也是要使用模板继承,所以需要先设计好带导航条和不带导航条的模板。
带导航条的如下:
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
<link href="{% static 'css/bootstrap.min.css' %}" rel="stylesheet">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta charset="UTF-8">
{% block title %}{% endblock %}
{% block style %}{% endblock %}
</head>
<body>
{% block navbar %}{#导航条的内容#}{% endblock %}
{% block content %}{% endblock %}
{% block footer %}{% endblock %}
<script src="{% static 'js/bootstrap.bundle.js' %}"></script>
{% block script %}{% endblock %}
</body>
</html>
不带导航条的就是少了一行{% block navbar %}{#导航条的内容#}{% endblock %}
,基本上用于非功能页面。
主页就用原来的页面修改一下,加一个登入登出的判断和退出功能。这个涉及到使用Django的用户身份认证。编写模板,然后采用Django原生提供的请求端口,就不在这上边再花费精力了。赶快写业务的代码。