1.models.py

ASSET_STATUS = (
(str(1), u"使用中"),
(str(2), u"未使用"),
(str(3), u"故障"),
(str(4), u"其它"),
) ASSET_TYPE = (
(str(1), u"物理机"),
(str(2), u"虚拟机"),
(str(3), u"容器"),
(str(4), u"网络设备"),
(str(5), u"安全设备"),
(str(6), u"其他")
) class Idc(models.Model):
ids = models.CharField(u"机房标识", max_length=255, unique=True)
name = models.CharField(u"机房名称", max_length=255, unique=True)
address = models.CharField(u"机房地址", max_length=100, blank=True)
tel = models.CharField(u"机房电话", max_length=30, blank=True)
contact = models.CharField(u"客户经理", max_length=30, blank=True)
contact_phone = models.CharField(u"移动电话", max_length=30, blank=True)
jigui = models.CharField(u"机柜信息", max_length=30, blank=True)
ip_range = models.CharField(u"IP范围", max_length=30, blank=True)
bandwidth = models.CharField(u"接入带宽", max_length=30, blank=True)
memo = models.TextField(u"备注信息", max_length=200, blank=True) def __str__(self):
return self.name class Meta:
verbose_name = u'数据中心'
verbose_name_plural = verbose_name class Host(models.Model):
hostname = models.CharField(max_length=50, verbose_name=u"主机名", unique=True)
ip = models.GenericIPAddressField(u"管理IP", max_length=15)
idc = models.ForeignKey(Idc, verbose_name=u"所在机房", on_delete=models.SET_NULL, null=True, blank=True)
other_ip = models.CharField(u"其它IP", max_length=100, blank=True)
asset_no = models.CharField(u"资产编号", max_length=50, blank=True)
asset_type = models.CharField(u"设备类型", choices=ASSET_TYPE, max_length=30, null=True, blank=True)
status = models.CharField(u"设备状态", choices=ASSET_STATUS, max_length=30, null=True, blank=True)
os = models.CharField(u"操作系统", max_length=100, blank=True)
vendor = models.CharField(u"设备厂商", max_length=50, blank=True)
up_time = models.CharField(u"上架时间", max_length=50, blank=True)
cpu_model = models.CharField(u"CPU型号", max_length=100, blank=True)
cpu_num = models.CharField(u"CPU数量", max_length=100, blank=True)
memory = models.CharField(u"内存大小", max_length=30, blank=True)
disk = models.CharField(u"硬盘信息", max_length=255, blank=True)
sn = models.CharField(u"SN号 码", max_length=60, blank=True)
position = models.CharField(u"所在位置", max_length=100, blank=True)
memo = models.TextField(u"备注信息", max_length=200, blank=True) def __str__(self):
return self.hostname

2.forms.py

from django import forms
from .models import Host
from django.forms.widgets import * class HostForm(forms.ModelForm):
class Meta:
model = Host
exclude = ("id",)
widgets = {
'hostname': TextInput(attrs={'class': 'form-control', 'style': 'width:530px;', 'placeholder': u'必填项'}),
'ip': TextInput(attrs={'class': 'form-control', 'style': 'width:530px;', 'placeholder': u'必填项'}),
'other_ip': TextInput(attrs={'class': 'form-control', 'style': 'width:530px;'}),
'group': Select(attrs={'class': 'form-control', 'style': 'width:530px;'}),
'asset_no': TextInput(attrs={'class': 'form-control', 'style': 'width:530px;'}),
'asset_type': Select(attrs={'class': 'form-control', 'style': 'width:530px;'}),
'status': Select(attrs={'class': 'form-control', 'style': 'width:530px;'}),
'os': TextInput(attrs={'class': 'form-control', 'style': 'width:530px;'}),
'vendor': TextInput(attrs={'class': 'form-control', 'style': 'width:530px;'}),
'up_time': TextInput(attrs={'class': 'form-control', 'style': 'width:530px;'}),
'cpu_model': TextInput(attrs={'class': 'form-control', 'style': 'width:530px;'}),
'cpu_num': TextInput(attrs={'class': 'form-control', 'style': 'width:530px;'}),
'memory': TextInput(attrs={'class': 'form-control', 'style': 'width:530px;'}),
'disk': TextInput(attrs={'class': 'form-control', 'style': 'width:530px;'}),
'sn': TextInput(attrs={'class': 'form-control', 'style': 'width:530px;'}),
'idc': Select(attrs={'class': 'form-control', 'style': 'width:530px;'}),
'position': TextInput(
attrs={'class': 'form-control', 'style': 'width:530px;', 'placeholder': u'物理机写位置,虚机写宿主'}),
'memo': Textarea(attrs={'rows': 4, 'cols': 15, 'class': 'form-control', 'style': 'width:530px;'}),
}

3.urls.py

url(r'^host_get', views.host_get, name="host_get")

4.views.py

from t1.models import Idc, Host
from t1.forms import HostForm def host_get(request):
if request.method == "GET":
h_form = HostForm()
idc_obj = Idc.objects.all().values("name")
print(idc_obj)
return render(request, "t1/host_get.html", locals()) elif request.method == "POST":
h_form = HostForm(request.POST)
if h_form.is_valid():
print(h_form.cleaned_data)
# Host.objects.create(**h_form.cleaned_data)
h_form.save()
return HttpResponse("数据添加成功")
else:
info_error = h_form.errors # <ul class="errorlist"><li>hostname<ul class="errorlist"><li>具有 主机名 的 Host 已存在。</li></ul></li></ul>
print(info_error.as_json())
# msg_error = info_error.as_json()
msg_error = info_error
return render(request, "msg_error.html", locals())

5.html

#msg_error.html

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body> <span style="color: red;">{{ msg_error }}</span> </body>
</html> #host_get.html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body> <form action=" {% url 'host_get' %}" method="POST">
{{ h_form.as_p }}
<input type="submit" value="提交">
{% csrf_token %}
</form>
</body>
</html>

5.测试

Django ModelForm 小实例1的更多相关文章

  1. Python自学笔记-Django分页器小实例

    from django.core.paginator import Paginator iter = 'abcdefhijklmnopqw' paginator = Paginator(iter,4) ...

  2. django进阶-小实例

    前言: 这篇博客对上篇博客django进阶作下补充. 一.效果图 前端界面较简单(丑),有两个功能: 从数据库中取出书名 eg: 新书A 在form表单输入书名,选择出版社,选择作者(多选),输入完毕 ...

  3. django Form 表单 总结与小实例

    开头寄语: 这几天一直在看Django的form表单验证,然后想对于这几天要有个总结. 首先,先来看一下找到的一个form表单验证的流程: 验证过程 流程详解1. 函数full_clean()依次调用 ...

  4. Django 小实例S1 简易学生选课管理系统 11 学生课程业务实现

    Django 小实例S1 简易学生选课管理系统 第11节--学生课程业务实现 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 课程模块中,学生需要拥 ...

  5. Django 小实例S1 简易学生选课管理系统 10 老师课程业务实现

    Django 小实例S1 简易学生选课管理系统 第10节--老师课程业务实现 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 课程模块中,老师将要使 ...

  6. Django 小实例S1 简易学生选课管理系统 5 实现注册功能

    Django 小实例S1 简易学生选课管理系统 第5节--实现注册功能 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 本文涉及到的新的额外知识点: ...

  7. Django 小实例S1 简易学生选课管理系统 12 CSS样式完善

    Django 小实例S1 简易学生选课管理系统 第12节--CSS样式完善 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 课程模块的逻辑代码到这里 ...

  8. Django 小实例S1 简易学生选课管理系统 9 创建课程模型(model)

    Django 小实例S1 简易学生选课管理系统 第9节--创建课程模型(model) 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 对于课程模块, ...

  9. Django 小实例S1 简易学生选课管理系统 8 CSS样式优化

    Django 小实例S1 简易学生选课管理系统 第8节--CSS样式优化 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 前面的几节下来,用户模块基 ...

随机推荐

  1. Tools - 浏览器Chrome

    Chrome HomePage:https://www.google.com/chrome/ Chrome应用商店:https://chrome.google.com/webstore/categor ...

  2. Spark之GraphX的Graph_scala学习

    /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreem ...

  3. 《ASP.NET Core跨平台开发从入门到实战》Web API自定义格式化protobuf

    <ASP.NET Core跨平台开发从入门到实战>样章节 Web API自定义格式化protobuf. 样章 Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于 ...

  4. php几种常见排序算法

    <?php //从时间上来看,快速排序和归并排序在时间上比较有优势,//但是也比不上sort排序,归并排序比较占用内存! $arr = [4,6,1,2,3,89,56,34,56,23,65] ...

  5. 移动端 h5开发相关内容总结(三)

    之前写过两篇开发中遇到的问题和解决方案.当时是CSS 和 JavaScript 分开写的.现在写这篇文章的时候感觉很多内容都是有内在联系的,所以不好分开. 给大家分享一下这半年来的感受吧: 知道和理解 ...

  6. 如何在GooglePlay上面发布应用

    上传和发布应用 注册开发者帐户后,您便可使用 Google Play 开发者控制台将应用上传到 Google Play. 访问 Google Play 开发者控制台. 点击屏幕顶部附近的添加新用户. ...

  7. win32编程简介

    win32编程简介 复习Win32整理下知识. 为什么学习win32? 我们要编写windos程序.都离不开API. 也就是我们所说的win32程序. 所以学好win32是你能不能再windows下编 ...

  8. mysql中的data下的数据文件(.FRM、.MYD、.MYI)恢复为数据

    记一次mysql中的data文件操作经历 想拿到一个项目的最新的数据,做功能升级使用,备份一份数据同时也作为本地测试数据,文件有些大,我直接通过远程的phpmyadmin程序导出,不能愉快的玩耍,直接 ...

  9. 图像处理中kmeans聚类算法C++实现

    Kmeans聚类算法是十分常用的聚类算法,给定聚类的数目N,Kmeans会自动在样本数据中寻找N个质心,从而将样本数据分为N个类别.下面简要介绍Kmeans聚类原理,并附上自己写的Kmeans聚类算法 ...

  10. Mybatis之逆向工程

    前面几篇基本把mybatis简单使用学习了下,今天学习下mybatis逆向工程,我们在开发中经常需要先设计数据库表结构或者先设计model,那就是能不能有工具可以只需在一边设计之后另一边自动生成呢?于 ...