Python2—0808笔记

管理系统基于form的增加修改

管理系统form表单的坑1

管理系统form表单的坑2


管理系统基于form的增加修改

增加

add.html

代码

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Title</title>

</head>

<body>

<form class="form-horizontal templatemo-container templatemo-login-form-1 margin-bottom-30" method="post" novalidate  role="form">

    {% csrf_token %}

    <p id="hostname">阿里云主机名:{{ form.hostname }}{{ form.errors.hostname.0 }}</p>

    <p id="ecsname">阿里云实例ID:{{ form.ecsname }}{{ form.errors.ecsname.0 }}</p>

    <p id="cpu">CPU:{{ form.cpu }}{{ form.errors.cpu.0 }}</p>

    <p id="mem">内存/G:{{ form.mem }}{{ form.errors.mem.0 }}</p>

    <p id="speed">带宽/M:{{ form.speed }}{{ form.errors.speed.0 }}</p>

    <p id="network">IP:{{ form.network }}{{ form.errors.network.0 }}</p>

    <p id="source">来源类型:{{ form.source\_id }}{{ form.errors.source\_id.0 }}</p>

    <p id="region">所属区域:{{ form.region\_id }}{{ form.errors.region\_id.0 }}</p>

{#    <p id="disks">磁盘:{{ form.disks\_id }}{{ form.errors.disks\_id.0 }}</p>#}

    <input type="submit" value="提交">

</form>

</body>

</html>


veiws.py

增加代码

class Add(View):

    def post(self,request,\*args,\*\*kwargs):

        # print(request.POST)

        form=form_class.HostForm(data=request.POST)

        if form.is_valid():

            # form.cleaned\_data\['source'\]=int(form.cleaned\_data\['source'\])

            models.Host.objects.create(**form.cleaned_data)

            # print('提交正常')

            return redirect('/host/list')

        else:

            print('错误信息',form.errors)

            return render(request,'add.html',locals())


修改

edit.html

代码

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Title</title>

</head>

<body>

<form class="form-horizontal templatemo-container templatemo-login-form-1 margin-bottom-30" method="post" novalidate   role="form">

    {% csrf_token %}

    <p id="hostname">阿里云主机名:{{ form.hostname }}{{ form.errors.hostname.0 }}</p>

    <p id="ecsname">阿里云实例ID:{{ form.ecsname }}{{ form.errors.hostname.0 }}</p>

    <p id="cpu">CPU:{{ form.cpu }}{{ form.errors.cpu.0 }}</p>

    <p id="mem">内存/G:{{ form.mem }}{{ form.errors.mem.0 }}</p>

    <p id="speed">带宽/M:{{ form.speed }}{{ form.errors.speed.0 }}</p>

    <p id="network">IP:{{ form.network }}{{ form.errors.network.0 }}</p>

    <p id="source">来源类型:{{ form.source\_id }}{{ form.errors.source\_id.0 }}</p>

    <p id="region">所属区域:{{ form.region\_id }}{{ form.errors.region\_id.0 }}</p>

{#    <p id="disks">磁盘:{{ form.disks\_id }}{{ form.errors.disks\_id.0 }}</p>#}

    <input type="submit" value="提交">

</form>

</body>

</html>


views.py

修改代码

class Update(View):

    def post(self,request,pk):

        print(pk)

        form = form_class.HostForm(data=request.POST)

        if form.is_valid():

            print(form.cleaned_data)

            models.Host.objects.filter(id=pk).update(**form.cleaned_data)

            # print('提交正常')

            return redirect('/host/list')

        else:

            print(form.errors)

            return render(request, 'edit.html', locals())

    def get(self,request,pk):

        print(pk)

        # get_id=int(request.GET.get('id'))

        obj=models.Host.objects.filter(id=pk).first()  #queset 类型

        # obj=models.Host.objects.filter(id=get\_id)   # queset\_list类型,但是只有一个值    \[1,\]

        #没写完

        form=form_class.HostForm(

            initial={'hostname':obj.hostname,

                     'ecsname':obj.ecsname,

                     'cpu':obj.cpu,

                     'mem':obj.mem,

                     'speed':obj.speed,

                     'network':obj.network,

                     'source\_id':obj.source\_id,

                     'region\_id':obj.region\_id,

                     }

        )

       return render(request,'edit.html',locals())


删除

veiws.py

删除代码

class Del(View):

    def post(self,request,\*args,\*\*kwargs):

        pass

    def get(self,request,\*args,\*\*kwargs):

        get_id = int(request.GET.get('id'))

        # get_id=int(request.GET.get('id'))

        models.Host.objects.filter(id=get_id).delete()

        return redirect('host/list')


host[urls.py](http://urls.py)

代码

from django.conf.urls import url,include

from django.contrib import admin

from host import views

urlpatterns = \[

    url(r'list$', views.List.as_view()),

    url(r'add$', views.Add.as_view()),

    url(r'edit/(\\d+)/', views.Update.as_view()),

    url(r'del', views.Del.as_view()),

\]



管理系统form表单的坑1

form_class.py

代码

from django.forms import fields

from django.forms import widgets

from django.forms import Form

from django.core.exceptions import ValidationError

from demo01 import models

class HostForm(Form):

    hostname=fields.CharField(

        # required=True,

        # error_messages={'required': '不能为空'},

        widget=widgets.TextInput(attrs={'class': 'form-control'})

    )

    ecsname=fields.CharField(

        # required=True,

        # error_messages={'required':'不能为空'},

        widget=widgets.TextInput(attrs={'class': 'form-controls'})

    )

    cpu=fields.IntegerField(

        required=True,

        # error_messages={'required': '不能为空','invalid':'输入不合规'},

        widget=widgets.TextInput(attrs={'class': 'form-control'})

    )

    mem = fields.IntegerField(

        required=True,

        # error_messages={'required': '不能为空','invalid':'输入不合规'},

        widget=widgets.TextInput(attrs={'class': 'form-control'})

    )

    speed = fields.CharField(

        required=True,

        # error_messages={'required': '不能为空','invalid':'输入不合规'},

        widget=widgets.TextInput(attrs={'class': 'form-control'})

    )

    network = fields.CharField(

        required=True,

        # error_messages={'required': '不能为空','invalid':'输入不合规'},

        widget=widgets.TextInput(attrs={'class': 'form-control'})

    )

    source_id=fields.ChoiceField(

        required=True,

        # initial=0,

        choices=\[\],  #\[(id,name),(id,name)\]

        widget=widgets.Select(attrs={'class': 'form-control'})

    )

    region_id = fields.ChoiceField(

        required=True,

        # initial=0,

        choices=\[\],

        widget=widgets.Select(attrs={'class': 'form-control'})

    )

    # disks_id = fields.MultipleChoiceField(

    #     required=True,

    #     choices=\[\],

    #     widget=widgets.SelectMultiple(attrs={'class': 'c1'})

    # )

    def \_\_init\_\_(self,\*args,\*\*kwargs):

        super(HostForm,self).\_\_init\_\_(\*args,\*\*kwargs)

        self.fields\['source\_id'\].choices=models.Source.objects.values\_list('id','name')

        self.fields\['region\_id'\].choices=models.Region.objects.values\_list('id','name')

        # self.fields\['disks\_id'\].choices=models.Disk.objects.values\_list('id','size')

widget=widgets.Select(attrs={'class': 'form-control'})  select 下拉列表

 def \_\_init\_\_(self,\*args,\*\*kwargs):

        super(HostForm,self).\_\_init\_\_(\*args,\*\*kwargs)

        self.fields\['source\_id'\].choices=models.Source.objects.values\_list('id','name')

        self.fields\['region\_id'\].choices=models.Region.objects.values\_list('id','name')

每做一个form类的 时候都会执行,这样在添加id ,name时不需要重新启动,就能出现新的下来选项

一对多关系,不能直接写死,需要__init__初始化

{{ form.errors.hostname.0 }} .0取列表的第一个值

add.html

代码

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Title</title>

</head>

<body>

<form class="form-horizontal templatemo-container templatemo-login-form-1 margin-bottom-30" method="post" novalidate  role="form">

    {% csrf_token %}

    <p id="hostname">阿里云主机名:{{ form.hostname }}{{ form.errors.hostname.0 }}</p>

    <p id="ecsname">阿里云实例ID:{{ form.ecsname }}{{ form.errors.ecsname.0 }}</p>

    <p id="cpu">CPU:{{ form.cpu }}{{ form.errors.cpu.0 }}</p>

    <p id="mem">内存/G:{{ form.mem }}{{ form.errors.mem.0 }}</p>

    <p id="speed">带宽/M:{{ form.speed }}{{ form.errors.speed.0 }}</p>

    <p id="network">IP:{{ form.network }}{{ form.errors.network.0 }}</p>

    <p id="source">来源类型:{{ form.source\_id }}{{ form.errors.source\_id.0 }}</p>

    <p id="region">所属区域:{{ form.region\_id }}{{ form.errors.region\_id.0 }}</p>

{#    <p id="disks">磁盘:{{ form.disks\_id }}{{ form.errors.disks\_id.0 }}</p>#}

    <input type="submit" value="提交">

</form>

</body>

</html>

<form class="form-horizontal templatemo-container templatemo-login-form-1 margin-bottom-30" method="post" novalidate  role="form">

novalidate 不显示浏览器自带的渲染信息

没有novalidae

{% csrf_token %}  把csrf token增加到表单中,不需要在setting中注释掉**'django.middleware.csrf.CsrfViewMiddleware'**,


管理系统form表单的坑2

veiws.py 

add 代码

class Add(View):

    def post(self,request,\*args,\*\*kwargs):

        # print(request.POST)

        form=form_class.HostForm(data=request.POST)

        if form.is_valid():

            # form.cleaned\_data\['source'\]=int(form.cleaned\_data\['source'\])

            models.Host.objects.create(**form.cleaned_data)

            # print('提交正常')

            return redirect('/host/list')

        else:

            print('错误信息',form.errors)

            return render(request,'add.html',locals())

return render(request,'add.html',locals())  locals 把函数中的所有变量都传过去

source_id  可以避免插入数据值类型的问题  id 是自增数字,不能是字符串

转载于:https://my.oschina.net/u/3959701/blog/3085529

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值