zoukankan      html  css  js  c++  java
  • 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': '530px;', 'placeholder': u'必填项'}),
                'ip': TextInput(attrs={'class': 'form-control', 'style': '530px;', 'placeholder': u'必填项'}),
                'other_ip': TextInput(attrs={'class': 'form-control', 'style': '530px;'}),
                'group': Select(attrs={'class': 'form-control', 'style': '530px;'}),
                'asset_no': TextInput(attrs={'class': 'form-control', 'style': '530px;'}),
                'asset_type': Select(attrs={'class': 'form-control', 'style': '530px;'}),
                'status': Select(attrs={'class': 'form-control', 'style': '530px;'}),
                'os': TextInput(attrs={'class': 'form-control', 'style': '530px;'}),
                'vendor': TextInput(attrs={'class': 'form-control', 'style': '530px;'}),
                'up_time': TextInput(attrs={'class': 'form-control', 'style': '530px;'}),
                'cpu_model': TextInput(attrs={'class': 'form-control', 'style': '530px;'}),
                'cpu_num': TextInput(attrs={'class': 'form-control', 'style': '530px;'}),
                'memory': TextInput(attrs={'class': 'form-control', 'style': '530px;'}),
                'disk': TextInput(attrs={'class': 'form-control', 'style': '530px;'}),
                'sn': TextInput(attrs={'class': 'form-control', 'style': '530px;'}),
                'idc': Select(attrs={'class': 'form-control', 'style': '530px;'}),
                'position': TextInput(
                    attrs={'class': 'form-control', 'style': '530px;', 'placeholder': u'物理机写位置,虚机写宿主'}),
                'memo': Textarea(attrs={'rows': 4, 'cols': 15, 'class': 'form-control', 'style': '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.测试

  • 相关阅读:
    dubbo踩坑
    windows下面使用protobuf
    解决端口占用的问题
    建设检验
    统计学资料整理
    java cpu 负载高分析
    演讲/汇报
    管理和领导
    css渐变动画
    vue组件之间互相传值:父传子,子传父
  • 原文地址:https://www.cnblogs.com/icemonkey/p/10544935.html
Copyright © 2011-2022 走看看