在前一篇我们已经建立了一套数据库用来存储我们的云资源资料以及有了一个简单的admin后台,但是这个后台毕竟太难看了,我们可以自己搭建一个更漂亮的界面来满足领导的需求,那么这个时候就需要template。在template中,我们存放HTML页面,并通过Django的API能够调用这些界面,同时能够把一些数据传递到这些页面上。

1.我们在之前已经建立好的Online文件夹里建立一个templates文件夹。

2.url.py里制定访问的网页路径,在这里我们先制定两个,一个是线上服务器的界面,另一个是数据库:

from django.conf.urls import url
from django.contrib import admin
import Online.views
urlpatterns = [url(r'^admin/', admin.site.urls),url(r'^alionlineecs/', Online.views.alionlineecs),url(r'^rds/', Online.views.rds),
]

3.在views.py里写上对应的函数:

# -*- coding: UTF-8 -*-
from django.shortcuts import render
from .models import alionlineECS,RDS    #这里的import是来自model.py里的
def alionlineecs(request):data = alionlineECS.objects.all()    #这里也是要跟model.py一样context = {'data': data,}#跳转到相应页面,并将值传递过去return render(request,'alionlineecs.html',context)    #规定alionlineecs.html作为展示页def rds(request):data = RDS.objects.all()context = {'data':data,}return render(request,'rds.html',context)

这个代码里面我写了 data=alionlineECS.objects.all(),这是通过DJANGO的ORM来进行SQL操作,建立context这个字典,将data值传递到相应页面。

4.在template文件夹里面建立alionlineecs.html和rds.html 这两个文件,alionlineecs.html如下:

<!DOCTYPE html>
<html>
<head lang="en">  <meta charset="UTF-8">  <title></title>
</head>
<body><table><tr><th>云服务器名称</th><th>云服务器类型</th><th>云服务器内网地址</th><th>云服务器外网地址</th><th>云服务器外网带宽</th><th>云服务器配置</th><th>备注</th></tr>{% for item in data %}<tr><td>{{ item.ecs_name }}</td><td>{{ item.ecs_type }}</td><td>{{ item.ecs_inip }}</td><td>{{ item.ecs_outip }}</td><td>{{ item.ecs_ipwidth }}</td><td>{{ item.ecs_spec }}</td><td>{{ item.ecs_remarks }}</td></tr>{% endfor %}</table>
</body>
</html>

而rds.html的内容如下:

<!DOCTYPE html>
<html>
<head lang="en">  <meta charset="UTF-8">  <title></title>
</head>
<body><table><tr><th>数据库名称</th><th>数据库类型</th><th>mysql版本</th><th>数据库规格</th><th>数据库地址</th><th>备注</th><th>存储空间</th></tr>{% for item in data %}<tr><td>{{ item.rds_name }}</td><td>{{ item.rds_type }}</td><td>{{ item.rds_mysql }}</td><td>{{ item.rds_spec }}</td><td>{{ item.rds_ip }}</td><td>{{ item.rds_remark }}</td><td>{{ item.rds_status }}</td></tr>{% endfor %}</table>
</body>
</html>

可以看出item里面的各个项就是model.py里面的项,这样就会一一对应。其中用{% %}括起的就是django的模板语言,在django的模板语言中,包含了类似于for循环,if等条件判断语句,可以非常灵活地满足用户的各种需求。其中,` data `用来在页面上显示data的值。此后,我们还将提到的include和block功能,将会非常方便地继承网页。

5.现在去启动django,然后在浏览器进入admin后台,添加两个rds实例,比如:

然后在浏览器尝试url中定义的rds的路径,就可以访问相应页面了:

但是我们还是不希望进入admin去改,毕竟 admin是后台,我们还是更希望在页面里进行增删改查的工作,那么要通过页面往数据库里传递数据是要通过表单的,而django的表单就叫做forms。这里我们使用ModelForm,因为我们之前已经写了一个model.py,而要添加的内容肯定都是model.py里的项,所以就采用ModelForm,改动很小,甚至可以用ModelForm来改model.py。

  1. 首先现在Online这个文件夹里面建立一个叫form.py,内容如下:

# -*- coding: UTF-8 -*-
from django.forms import ModelForm
from .models import alionlineECS,SLB,RDS    #这里暂时先加这三项
#定义Node的Form,Form名字为 模式名+Form
class alionlineForm(ModelForm):#自定义ModelForm的内容class Meta:#该ModelForm参照Model: alionlineECSmodel = alionlineECS#在Form中不显示注册人这个字段,下面也是 exclude = ['ecs_signer']
class SLBForm(ModelForm):class Meta:model = SLBexclude = ['slb_signer']
class RDSForm(ModelForm):class Meta:model = RDSexclude = ['rds_signer']

2.由于要建立url与页面的关系, 我们要在url.py里追加这样的话:

url(r'^addalionlineecs/', Online.views.addalionlineecs),
url(r'^addslb/', Online.views.addslb),
url(r'^addrds/', Online.views.addrds),

3.然后还要在view.py里添加对应的函数关系:

from forms import alionlineForm,SLBForm,RDSForm
def addalionlineecs(request):#获取来自alionlineForm的表单数据  form = alionlineForm(request.POST or None)#判断form是否有效if form.is_valid():#创建实例,需要做些数据处理,暂不做保存instance = form.save(commit=False)#将登录用户作为登记人instance.node_signer = request.user#保存该实例instance.save()#跳转至列表页面  return redirect('/alionlineecs/')#创建context来集中处理需要传递到页面的数据  context = {'form': form,}#如果没有有效提交,则仍留在原来页面  return render(request, 'addalionlineecs.html', context)

4.来到template里新写一个addalionlineecs.html,内容如下:

<!DOCTYPE html>
<html>
<head lang="en">  <meta charset="UTF-8">  <title></title>
</head>
<body><form method='POST' action=''>{% csrf_token %}{{ form }}<input type='submit' value='提交' /></form>
</body>
</html>

5.来到浏览器里,打开对应的addonlineecs.html就会看到添加的界面了,就不用在admin里添加了:

点击旁边的“提交”之后,看到地址栏机会跳到alionlineecs这个界面:

这样一个基于页面的增删改查的环境就搭建完毕了。

转载于:https://blog.51cto.com/chenx1242/1946950

Django运维后台的搭建之二:建立template和对应的ModelForm相关推荐

  1. Django运维后台的搭建之一:使用model建立数据信息

    2017年的上半年对我来说是极其难忘的一年,整个乐橙运营部的平台运维全靠我一个人,而且同时公司又新上了一个阿里深圳区一个阿里公有云一个杭州公有云三套环境外加一套演示环境.所以一直念叨的运维后台始终拖拖 ...

  2. Django运维后台的搭建之四:用bootstrap模板让运维前台变得更漂亮

    我对于PHP和ajax是属于二把刀的水平,所以做网页前端肯定是比上天还难,但是我又想把网页做的漂亮可爱,怎么办呢?我就只好去download别人的模板,在这里我使用了bootstrap框架做的模板. ...

  3. Linux运维 第三阶段 (二) DHCP

    Linux运维 第三阶段 (二) DHCP服务 dhcp(dynamic host configuration protocol) 前期bootp(无盘工作站)-->dhcp(引入租约lease ...

  4. 运维服务能力管理体系应建立的几种能力

    运维服务能力管理体系应建立的几种能力包括: 1.运维业务战略设计与规划能力:企业应具备有对运维业务的定位.发展战略.新型运维业务发展进行规划分析的能力,能够规划出与战略相匹配的运维业务方向.业务的管理 ...

  5. 大米运维 -- 监控体系搭建

    文章目录 0.监控体系框架 1.监控系统设计 1.1 评估系统 1.2 监控种类 1.3 监控技术方案/软件选取(主观因素) 1.4 监控体系的人员安排 2.监控系统搭建 3.数据采集编写 3.1 可 ...

  6. 运维自动化------ansible搭建

    运维自动化发展历程及技术应用 IaaS基础设施即服务(相当于卖硬件) ,PaaS平台即服务(卖操作系统),SaaS软件即服务(卖软件) 企业实际应用场景分析 灰度环境(生产环境的一部分) 功能:在全量 ...

  7. Open-falcon运维监控系统——微信接口二次开发

    1.Open-falcon运维监控系统简介 OpenFalcon是一款由小米运维团队从互联网公司的需求出发, 根据多年的运维经验,结合市面上使用的一些运维监控系统的使用经验和反馈,开发的一套企业级.高 ...

  8. 技本功丨甲方大人来了之运维数据分析平台搭建实战

    袋鼠云日志团队时常遇到各种各样的甲方大人,毕竟我们是一个非常优秀的企业服务公司(自信满满),当然面对甲方大人的时候要做到处变不惊,临危不乱,镇定自若的接受需求-- 甲方大人的常用台词一定要记住:我们很 ...

  9. Linux运维 | 私人服务器搭建的全过程

    最近,前些天新买的树莓派到了.于是,准备上手用这个树莓派搭建一个属于自己的服务器,在上面放一个人网站,以后可能会当作一个云盘.个人博客以及Minecraft的私服. 以下记录一下全过程 有线连接树莓派 ...

最新文章

  1. Silverlight实用窍门系列:42.读取拖动到控件上的外部txt和jpg文件,多外部文件的拖动【附带实例源码】...
  2. (原創) 今天拿到學生證了 (日記)
  3. css 垂直居中_CSS 水平+垂直居中的方式
  4. 本周ASP.NET英文技术文章推荐[??/?? - 09/22]:VS 2008、.NET 3.5、asp:ListView、DotNetNuke、ASP.NET AJAX...
  5. Codeforces Round #757 (Div. 2)ABCD1
  6. CDC相关知识点总结
  7. jflash添加芯片_Jflash用于烧录
  8. 华为HCIE RS笔记-21OSPF基本知识
  9. 微信跳转,wap浏览器跳转到微信
  10. mysql如何批量添加数据_mysql如何大批量插入数据 mysql大批量插入数据4种方法
  11. 数据库实验八--OpenGauss(数据库的备份与恢复)
  12. 【2021】15天通过阿里云云计算架构师认证考试(ACE)- 经验分享
  13. 如何设置Google浏览器支持跨域
  14. jQuery图像照片剪裁插件Jcrop中文演示
  15. CAN波特率与负载率
  16. 复现0ctf blog
  17. 软件构造博客之工厂模式
  18. stm32实现呼吸灯
  19. 学编程有哪些好点的网站呢?
  20. oTMS携手阿里云:互联互通运输管理软件背后的大数据升级

热门文章

  1. android openGl纹理的使用
  2. Rendering: repaint, reflow/relayout, restyle的学习笔记
  3. Pytorch基础训练库Pytorch-Base-Trainer(支持模型剪枝 分布式训练)
  4. (二)docker安装并持久化postgresql数据库
  5. 20165203 《网络对抗技术》week1 Kali的安装与配置
  6. 毕业设计:文献参考(十三)
  7. GIS+=地理信息+容器技术(4)——Docker执行
  8. 《自动化技术中的进给电气传动》1.4节读书笔记
  9. Android 开发工具类 02_DensityUtils
  10. HDU 2822 Dogs【两次bfs】