Django ModelForm 小实例1
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的更多相关文章
- Python自学笔记-Django分页器小实例
from django.core.paginator import Paginator iter = 'abcdefhijklmnopqw' paginator = Paginator(iter,4) ...
- django进阶-小实例
前言: 这篇博客对上篇博客django进阶作下补充. 一.效果图 前端界面较简单(丑),有两个功能: 从数据库中取出书名 eg: 新书A 在form表单输入书名,选择出版社,选择作者(多选),输入完毕 ...
- django Form 表单 总结与小实例
开头寄语: 这几天一直在看Django的form表单验证,然后想对于这几天要有个总结. 首先,先来看一下找到的一个form表单验证的流程: 验证过程 流程详解1. 函数full_clean()依次调用 ...
- Django 小实例S1 简易学生选课管理系统 11 学生课程业务实现
Django 小实例S1 简易学生选课管理系统 第11节--学生课程业务实现 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 课程模块中,学生需要拥 ...
- Django 小实例S1 简易学生选课管理系统 10 老师课程业务实现
Django 小实例S1 简易学生选课管理系统 第10节--老师课程业务实现 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 课程模块中,老师将要使 ...
- Django 小实例S1 简易学生选课管理系统 5 实现注册功能
Django 小实例S1 简易学生选课管理系统 第5节--实现注册功能 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 本文涉及到的新的额外知识点: ...
- Django 小实例S1 简易学生选课管理系统 12 CSS样式完善
Django 小实例S1 简易学生选课管理系统 第12节--CSS样式完善 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 课程模块的逻辑代码到这里 ...
- Django 小实例S1 简易学生选课管理系统 9 创建课程模型(model)
Django 小实例S1 简易学生选课管理系统 第9节--创建课程模型(model) 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 对于课程模块, ...
- Django 小实例S1 简易学生选课管理系统 8 CSS样式优化
Django 小实例S1 简易学生选课管理系统 第8节--CSS样式优化 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 前面的几节下来,用户模块基 ...
随机推荐
- 手把手教你如何用eclipse搭建前端开发环境
3.创建静态web工程 打开eclipse,选择file,new project 或者 new other...,选择web项中的static web project ,next. 输入你的项目名,如 ...
- postgresql-无序uuid tps测试
# postgresql-无序uuid tps测试 ## 无序uuid对数据库的影响 由于最近在做超大表的性能测试,在该过程中发现了无序uuid做主键对表插入性能有一定影响.结合实际情况发现当表的数据 ...
- 脚手架vue-cli系列二:vue-cli的工程模板与构建工具
上篇文章我们提到了vue-cli的工程模板.这里我们来详细的进行介绍. vue-cli提供的脚手架只是一个最基础的,也可以说是Vue团队认为的工程结构的一种最佳实践.对于初学者或者以前曾从事Angul ...
- VS发布 错误 未能将文件 复制到
在VS内部编译及试运行的时候并为出现错误一切正常 当将项目发布时提示XXX文件无法复制到对应的obj文件夹下 未能将文件 upfile\team\2013\0328\20130328112637296 ...
- C# 对密码等数据进行对称性加密解密
类: /// <summary> /// DESEncrypt加密解密算法. /// </summary> public class DESEncrypt { private ...
- 理解数据库连接池和ThreadLocal实现的事务控制
我发现 不少人 误解了这两者. csdn上也有人提出过这种疑问: http://bbs.csdn.net/topics/250061733 经过查阅资料和认真分析,我特说明一下这两者概念上的区别. 我 ...
- 开源网站流量统计系统Piwik源码分析——后台处理(二)
在第一篇文章中,重点介绍了脚本需要搜集的数据,而本篇主要介绍的是服务器端如何处理客户端发送过来的请求和参数. 一.设备信息检测 通过分析User-Agent请求首部(如下图红线框出的部分),可以得到相 ...
- mysql格式化时间戳为日期
MySQL中有一个像PHP的date函数一样的日期格式化函数DATE_FORMAT,使用这个函数时,需要像下面例子这样传递一个格式字符串和时间戳 SELECT DATE_FORMAT(NOW(),&q ...
- mysql查找一个字段属于哪个表
查询mid字段存在于哪个表中 SELECT TABLE_SCHEMA,TABLE_NAME FROM information_schema.`COLUMNS` WHERE COLUMN_NAME='m ...
- SpringBoot(3) 文件上传和访问
springboot文件上传 MultipartFile file,源自SpringMVC MultipartFile 对象的transferTo方法,用于文件保存(效率和操作比原先用FileOutS ...