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辅导老师. 前面的几节下来,用户模块基 ...
随机推荐
- linux下 /usr/bin/ld: 找不到 -ldhnetsdk的解决方法
linux下使用Qt编译程序的时候,安装了程序自带的链接库之后,仍然上报这个错误, 发现系统上报这个错误: /usr/bin/ld: 找不到 -ldhnetsdk 经过仔细的定位,终于解决了,这里把思 ...
- 内存管理-slab[原理]
前言 主要讲解原理,基于2.6.32版本内核源码.本文整体思路:先由简单内存模型逐渐演进到当下通用服务器面对的内存模型,讨论每一个内存模型下slab设计需要解决的问题. 历史简介 linux内核运行需 ...
- [P4318] 完全平方数
想不出什么办法能直接算的(别跟我提分块打表),不如二分答案吧:设\(f(x)=\sum_{i=1}^n [i不是"完全平方数"]\), 显然f(x)与x正相关.再结合筛法.容斥,不 ...
- java中String类型与Date日期类型的互相转换
//String格式的数据转化成Date格式,Date格式转化成String格式 SimpleDateFormat formatter= new SimpleDateFormat("yyyy ...
- 出现 The processing instruction target matching "[xX][mM][lL]" is not allowed错误
错误原因与解决办法: 这个错误的原因是因为xml的开始有多余的空格造成的,只要把多余的空格删除就没有问题了. xml开始部分写注释也会出现此问题. 本文出自:艺意
- mac下nginx搭建
首先使用brew安装nginx brew install nginx 安装完毕后,如果我们要使用nginx监听本地的80端口,需要改掉mac自带的apache占用的80端口 sudo vim /etc ...
- Spring Boot - 修改Tomcat默认的8080端口
前言 默认情况下,Spring Boot内置的Tomcat服务会使用8080端口启动,我们可以使用以下任何技巧去更改默认的Tomcat端口: 注:我们可以通过server.port=0配置,去自动配置 ...
- 从零开始学 Web 之 CSS(二)文本、标签、特性
大家好,这里是「 Daotin的梦呓 」从零开始学 Web 系列教程.此文首发于「 Daotin的梦呓 」公众号,欢迎大家订阅关注.在这里我会从 Web 前端零基础开始,一步步学习 Web 相关的知识 ...
- Java并发编程之volatile关键字
大概是因为项目.业务的原因,工作上几乎还没有使用过多线程相关的功能,相关知识差不多都忘了,所以最近补一下基础. volatile用来修饰共享变量,volatile变量具有 synchronized 的 ...
- 常见HTTP状态码及URL编码表
常见HTTP状态码 1xx: 信息 (用于表示临时响应并需要请求者执行操作才能继续的状态代码) 消息: 描述: 100 Continue 服务器仅接收到部分请求,但是一旦服务器并没有 ...