下面介绍forms模块如何与后台数据库交互,把from提交过来的数据写入到后台数据库中

froms与model结合使用


1、vim modes.py中创建数据表

from django.db import models

class admin(model.Model):

     gender_tuple=(

                   (1,'男'),

                   (2,'女'),

                   

                  )

     username = models.Char Field(max_length=50)

     email = models.CharField(max_length=50)

     gender = models.CharField(max_length=50,choices=gender_tuple)

     #choices=gender_tuple相当html中的select方法





vim forms.py

from django import forms

from app01 import models

class AdminModelForm(forms.ModelForm):

       思路:如何让ModelFrom与form建立关系

       class Meta:

             model = models.admin #models里的admin表

             fields =('username','email') #在html页面指定显示的input字段

             自定义插件属性

             widgets = {

                         'email':forms.PasswordIput((attrs={'class':'auto'})),

                        }



2在setting.py中配置下数据库连接信息

   DATABASES = {

    'default': {

        'ENGINE': 'django.db.backends.mysql',

        'NAME': 'cmdb',

        'USER':'root',

        'PASSWORD':'tom123',

        'HOST':'',

        'PORT':'',

    }

}


 

 3初始化数据库

   python mange.py makemigrations

   python mange.py syncdb



  4.

     views.py里面写一个生成用forms模块input标签的方法

    def  index3(request):

             if  request.method == ‘POST’:  #判断在html表单里面提交的方式是什么(一般是2种方式 post和get)

                  form  = forms.AdminModelForm(request.POST) 

                    AdminForm是在froms.py里面的一个类,通过forms方法来调用,并赋值给form

                    if  forms.is_valid(): #判断是否合法,输入错误的会在前端页面提示错误信息

                        data = form.cleaned_data 请求通过接受该数据

                        form.save() #表示直接讲数据存到数据库中

                    else:#如果输入规则不匹配在前台显示错误信息

                         print form.erros.as_data()

                         print form.erros.as_json()

                         print form.erros.as_text()

                         print form.erros.as_ul()

                         常见错误信息格式

              else:

                    form = forms.AdminModelForm() #判断如果不是post方法提交的

              print fors.fields

          return render_to_response(‘index3.html’,{‘model’:form})

          #把结果返回给前端的index2.html,model是前端Index2.html里面的一个变量用于接受后台返回的数据,form是真实的数据

   


    5.

<html>

<head>

<meta http-equiv="Content-Type" content="text/html"/>

    <title></title>

</head>

<body>

<form action='/index3/' method='POST'>

    ` model`.`as_table` 已table形式展示出来

     ` model`.`as_ul`  已ul形式展示出来

     具体查看form父类里面的详细方法---源码

     好处省代码

     坏处样式不可控

    <input type='submit' value='提交' />

</form>

</body>

</html>

      6.别忘了配置url,即在urls.py添加url指向