管理系统list
管理系统增删改
管理系统list
cmdb[urls.py](http://urls.py)
代码
from django.conf.urls import url,include
from django.contrib import admin
from demo01 import views
urlpatterns = \[
url(r'^admin/', admin.site.urls),
url(r'^host/', include('host.urls')),
\]
host[urls.py](http://urls.py)
代码
from django.conf.urls import url,include
from django.contrib import admin
from host import views
urlpatterns = \[
url(r'list$', views.List.as_view()),
url(r'add$', views.Add.as_view()),
url(r'edit/(\\d+)/', views.Update.as_view()),
url(r'del', views.Del.as_view()),
\]
#host/list views.List.as_view()),
#host/add views.Add.as_view())
代码
from django.db import models
class Disk(models.Model):
'''磁盘'''
path = models.CharField(max\_length=64, blank=True, null=True, verbose\_name='挂载路径')
size = models.CharField(max\_length=16, blank=True, null=True, verbose\_name='磁盘大小/G')
remarks = models.CharField(max\_length=2048, blank=True, null=True, verbose\_name='备注')
def \_\_str\_\_(self):
return self.size
class Meta:
verbose\_name\_plural = "磁盘表"
class Region(models.Model):
name = models.CharField(max\_length=64,blank=True,null=True,verbose\_name='区域')
def \_\_str\_\_(self):
return self.name
class Meta:
verbose\_name\_plural = "区域表"
class Host(models.Model):
hostname = models.CharField(max\_length=64, blank=True, null=True, verbose\_name='阿里云主机名')
ecsname = models.CharField(max\_length=64, blank=True, null=True, verbose\_name='阿里云实例ID')
logining = models.ManyToManyField(to='Login', blank=True, null=True, verbose_name='授权用户')
login\_port = models.CharField(max\_length=16, default='22', blank=True, null=True, verbose_name='ssh登录端口')
cpu = models.CharField(max\_length=8, blank=True, null=True, verbose\_name='CPU')
mem = models.CharField(max\_length=8, blank=True, null=True, verbose\_name='内存/G')
speed = models.CharField(max\_length=8, blank=True, default='5', null=True, verbose\_name='带宽/M')
disks = models.ManyToManyField(to='Disk', blank=True, null=True, verbose_name='磁盘')
network = models.CharField(max\_length=32, blank=True, null=True, verbose\_name='IP')
sn = models.CharField(max\_length=64, blank=True, null=True, verbose\_name='sn')
kernel = models.CharField(max\_length=64, blank=True, null=True, verbose\_name='系统内核') # 内核+版本号
source = models.ForeignKey(to='Source', blank=True, null=True, verbose\_name='来源类型',on\_delete=models.CASCADE)
region = models.ForeignKey(to='Region', blank=True, null=True, verbose\_name='所属区域',on\_delete=models.CASCADE)
state_choices = (
(1, 'Running'),
(2, '下线'),
(3, '关机'),
(4, '删除'),
(5, '故障'),
)
state = models.SmallIntegerField(verbose\_name='主机状态', choices=state\_choices, blank=True, null=True, )
def \_\_str\_\_(self):
return self.network
class Meta:
verbose\_name\_plural = "主机表"
class Login(models.Model):
'''登录相关'''
login\_name = models.CharField(max\_length=16, default='root', verbose_name='登录用户名')
login\_pwd= models.CharField(max\_length=64, blank=True, null=True, verbose_name='登录密码')
auth=models.CharField(max\_length=8,blank=True, null=True, verbose\_name='具有权限')
def \_\_str\_\_(self):
return self.login_name
class Meta:
verbose\_name\_plural = "主机用户表"
class Source(models.Model):
'''来源:阿里云、物理机(某机房等)'''
name = models.CharField(max\_length=16, blank=True, null=True, verbose\_name='来源')
def \_\_str\_\_(self):
return self.name
class Meta:
verbose\_name\_plural = "主机来源表"
host.html
代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>主机列表</title>
</head>
<body>
<div>
<a href="/host/add">添加</a>
</div>
<div class="container">
<table class="table table-bordered table-hover" id="table">
<thead>
<tr>
<th> </th>
<th> 主机名 </th>
<th> CPU </th>
<th> 内存/G </th>
<th> 带宽/M </th>
<th> IP </th>
<th> 来源类型 </th>
<th> 所属区域 </th>
<th> 状态 </th>
<th> 编辑 </th>
<th> 删除 </th>
</tr>
</thead>
<tbody>
{% for host in host_list %}
<tr>
<td>{{ host.id }}</td>
<td>{{ host.hostname }}</td>
<td>{{ host.cpu }}</td>
<td>{{ host.mem }}</td>
<td>{{ host.speed }}</td>
<td>{{ host.network }}</td>
<td>{{ host.source }}</td>
<td>{{ host.region }}</td>
<td>{{ host.get\_state\_display }}</td>
<td><a href="/host/edit/{{ host.id }}/">编辑</a></td>
{# <td><a href="/host/edit?id={{ host.id }}">编辑</a></td>#}
<td><a href="/host/del?id={{ host.id }}">删除</a></td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</body>
{{ host.get_state_display }} django 自带方法
代码
from django.shortcuts import render,redirect,HttpResponse
from django.views import View
from demo01 import models
from utlis import form_class
#https://www.cnblogs.com/onda/p/7509172.html
class List(View):
def post(self,request,\*args,\*\*kwargs):
pass
def get(self,request,\*args,\*\*kwargs):
#取到所有值
host_list=models.Host.objects.all()
# return render(request,'host.html',{'host\_list':host\_list})
return render(request,'host.html',locals())
class Add(View):
def post(self,request,\*args,\*\*kwargs):
# print(request.POST)
form=form_class.HostForm(data=request.POST)
if form.is_valid():
# form.cleaned\_data\['source'\]=int(form.cleaned\_data\['source'\])
models.Host.objects.create(**form.cleaned_data)
# print('提交正常')
return redirect('/host/list')
else:
print('错误信息',form.errors)
return render(request,'add.html',locals())
def get(self,request,\*args,\*\*kwargs):
form=form_class.HostForm()
# bbb='测试'
return render(request,'add.html',locals())
class Update(View):
def post(self,request,pk):
print(pk)
form = form_class.HostForm(data=request.POST)
if form.is_valid():
print(form.cleaned_data)
models.Host.objects.filter(id=pk).update(**form.cleaned_data)
# print('提交正常')
return redirect('/host/list')
else:
print(form.errors)
return render(request, 'edit.html', locals())
def get(self,request,pk):
print(pk)
# get_id=int(request.GET.get('id'))
obj=models.Host.objects.filter(id=pk).first() #queset 类型
# obj=models.Host.objects.filter(id=get\_id) # queset\_list类型,但是只有一个值 \[1,\]
#没写完
form=form_class.HostForm(
initial={'hostname':obj.hostname,
'ecsname':obj.ecsname,
'cpu':obj.cpu,
'mem':obj.mem,
'speed':obj.speed,
'network':obj.network,
'source\_id':obj.source\_id,
'region\_id':obj.region\_id,
}
)
return render(request,'edit.html',locals())
class Del(View):
def post(self,request,\*args,\*\*kwargs):
pass
def get(self,request,\*args,\*\*kwargs):
get_id = int(request.GET.get('id'))
# get_id=int(request.GET.get('id'))
models.Host.objects.filter(id=get_id).delete()
return redirect('host/list')
运行
访问127.0.0.1:8000/host/list
管理系统增删改
增加
add.html
代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form class="form-horizontal templatemo-container templatemo-login-form-1 margin-bottom-30" method="post" novalidate role="form">
{% csrf_token %}
<p id="hostname">阿里云主机名:{{ form.hostname }}{{ form.errors.hostname.0 }}</p>
<p id="ecsname">阿里云实例ID:{{ form.ecsname }}{{ form.errors.ecsname.0 }}</p>
<p id="cpu">CPU:{{ form.cpu }}{{ form.errors.cpu.0 }}</p>
<p id="mem">内存/G:{{ form.mem }}{{ form.errors.mem.0 }}</p>
<p id="speed">带宽/M:{{ form.speed }}{{ form.errors.speed.0 }}</p>
<p id="network">IP:{{ form.network }}{{ form.errors.network.0 }}</p>
<p id="source">来源类型:{{ form.source\_id }}{{ form.errors.source\_id.0 }}</p>
<p id="region">所属区域:{{ form.region\_id }}{{ form.errors.region\_id.0 }}</p>
{# <p id="disks">磁盘:{{ form.disks\_id }}{{ form.errors.disks\_id.0 }}</p>#}
<input type="submit" value="提交">
</form>
</body>
</html>
veiws.py
增加代码
class Add(View):
def post(self,request,\*args,\*\*kwargs):
# print(request.POST)
form=form_class.HostForm(data=request.POST)
if form.is_valid():
# form.cleaned\_data\['source'\]=int(form.cleaned\_data\['source'\])
models.Host.objects.create(**form.cleaned_data)
# print('提交正常')
return redirect('/host/list')
else:
print('错误信息',form.errors)
return render(request,'add.html',locals())
修改
edit.html
代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form class="form-horizontal templatemo-container templatemo-login-form-1 margin-bottom-30" method="post" novalidate role="form">
{% csrf_token %}
<p id="hostname">阿里云主机名:{{ form.hostname }}{{ form.errors.hostname.0 }}</p>
<p id="ecsname">阿里云实例ID:{{ form.ecsname }}{{ form.errors.hostname.0 }}</p>
<p id="cpu">CPU:{{ form.cpu }}{{ form.errors.cpu.0 }}</p>
<p id="mem">内存/G:{{ form.mem }}{{ form.errors.mem.0 }}</p>
<p id="speed">带宽/M:{{ form.speed }}{{ form.errors.speed.0 }}</p>
<p id="network">IP:{{ form.network }}{{ form.errors.network.0 }}</p>
<p id="source">来源类型:{{ form.source\_id }}{{ form.errors.source\_id.0 }}</p>
<p id="region">所属区域:{{ form.region\_id }}{{ form.errors.region\_id.0 }}</p>
{# <p id="disks">磁盘:{{ form.disks\_id }}{{ form.errors.disks\_id.0 }}</p>#}
<input type="submit" value="提交">
</form>
</body>
</html>
views.py
修改代码
class Update(View):
def post(self,request,pk):
print(pk)
form = form_class.HostForm(data=request.POST)
if form.is_valid():
print(form.cleaned_data)
models.Host.objects.filter(id=pk).update(**form.cleaned_data)
# print('提交正常')
return redirect('/host/list')
else:
print(form.errors)
return render(request, 'edit.html', locals())
def get(self,request,pk):
print(pk)
# get_id=int(request.GET.get('id'))
obj=models.Host.objects.filter(id=pk).first() #queset 类型
# obj=models.Host.objects.filter(id=get\_id) # queset\_list类型,但是只有一个值 \[1,\]
#没写完
form=form_class.HostForm(
initial={'hostname':obj.hostname,
'ecsname':obj.ecsname,
'cpu':obj.cpu,
'mem':obj.mem,
'speed':obj.speed,
'network':obj.network,
'source\_id':obj.source\_id,
'region\_id':obj.region\_id,
}
)
return render(request,'edit.html',locals())
删除
veiws.py
删除代码
class Del(View):
def post(self,request,\*args,\*\*kwargs):
pass
def get(self,request,\*args,\*\*kwargs):
get_id = int(request.GET.get('id'))
# get_id=int(request.GET.get('id'))
models.Host.objects.filter(id=get_id).delete()
return redirect('host/list')
host\urls.py
代码
from django.conf.urls import url,include
from django.contrib import admin
from host import views
urlpatterns = \[
url(r'list$', views.List.as_view()),
url(r'add$', views.Add.as_view()),
url(r'edit/(\\d+)/', views.Update.as_view()),
url(r'del', views.Del.as_view()),
\]