Django 财务综合系统开发日志 002 主页面

Django 财务综合系统开发日志 002 主页面

先做个主页面。

先把主页做了。基本上就拿原来的模板改改就行。反正还是非前后端交互项目,逻辑不会太复杂。

这次的样式库还是用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的对应视图的分发。

先创建应用层级的urls.py

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原生提供的请求端口,就不在这上边再花费精力了。赶快写业务的代码。

LICENSED UNDER CC BY-NC-SA 4.0
Comment