3.基于psutil子產品監控使用者登入監控
需求:使用者通路http://ip/users/,傳回目前登入使用者的詳細資訊
詳情如下表:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIn5GcukzNxADNxADM2IzNwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
1)配置host/urls.py
urlpatterns = [
# 子路由配置,有對應的視圖函數.
path('', views.index, name='index'),
path('disk/', views.disk, name='disk'),
# 快速拷貝一行ctrl + d
+ path('users/', views.users, name='users'),
]
2)配置 host/views.py
#添加users函數
def users(requests):
all_users = []
# [suser(name='Fan', terminal=None, host=None, started=1595661568.4721968, pid=None)]
users = psutil.users() ##擷取所有使用者資訊
for user in users:
one_user = {
'name':user.name, ##使用者名
'host':user.host, ##使用者主機
'started': datetime.fromtimestamp(user.started) ##使用者登陸時間
}
all_users.append(one_user) ##one_user對象添加到all_users
# 傳回html頁面資訊
return render(requests, 'host/users.html', {'users':all_users})
3)templates/host/users.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>登入使用者監控資訊</title>
{# 導入Bootstrap幫我們設定好的CSS樣式和JS的動效 #}
<link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
{% include 'host/nav.html' %}
{# Django模闆中好用的功能: 過濾器 users|length 擷取該清單的長度#}
<h1>登入使用者資訊監控-登入的使用者數量: {{ users | length }}</h1>
{#設定table标簽的類名稱為table和table-striped,其實就是使用Bootstrap幫我們寫好的CSS樣式設定表格樣式#}
<table class="table table-striped table-hover">
<tr>
<td>登入的使用者名</td>
<td>登入的主機</td>
<td>登入的時間</td>
</tr>
{% for user in users %}
<tr>
<td>{{ user.name }}</td>
<td>{{ user.host }}</td>
<td>{{ user.started | date}}</td>
</tr>
{% endfor %}
</table>
</body>
</html>
4)templates/host/nav.htm
注意到{#編寫代碼發現html代碼重複較多,就可以抽象出來, 存儲到一個檔案中#}
{#其他檔案希望使用, {% include ‘host/nav.html’ %} 導入即可 #}
<nav class="navbar navbar-inverse" role="navigation">
<div class="container-fluid">
<div class="navbar-header">
{# 超連結 #}
<a class="navbar-brand" href="/">Sysinfo</a>
</div>
<div>
<ul class="nav navbar-nav">
<li><a href="/">主機資訊監控</a></li>
<li><a href="/disk/">磁盤分區監控</a></li>
<li><a href="/users/">登入使用者監控</a></li>
</ul>
</div>
</div>
</nav>
寫完的代碼上傳到遠端庫
git init
git add *
git commit -m "psutil結合Django項目第一次上傳"
git remote add origin https://github.com/ninesunzhang/“git庫”
git push origin master