django froms與models結合使用

下面介紹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指向


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章