Django中表單Form的使用

2021-10-07 07:04:11 字數 3489 閱讀 8539

在django中對表單form的定義涉及三個檔案:

1、model.py:

定義form對應到資料庫中的表,如:

from django.db import models

# create your models here.

from django.db import models

class

student

(models.model)

: ***_items =[(

1,'男'),(

2,'女'),(

0,'未知'),

] status_items =[(

0,'申請'),

(1,'通過'),

(2,'拒絕'),

] name = models.charfield(max_length=

128, verbose_name=

"姓名"

) *** = models.integerfield(choices=***_items, verbose_name=

"性別"

) profession = models.charfield(max_length=

128, verbose_name=

"專業"

) email = models.emailfield(verbose_name=

"email"

) qq = models.charfield(max_length=

128, verbose_name=

"qq"

) phone = models.charfield(max_length=

128, verbose_name=

"手機號碼"

) status = models.integerfield(choices=status_items, default=

0, verbose_name=

"審核狀態"

) created_time = models.datetimefield(auto_now_add=

true

, editable=

false

, verbose_name=

"建立時間"

) @property

def***_show

(self)

:return

dict

(self.***_items)

[self.***]

@classmethod

defget_all

(cls)

:return cls.objects.

all(

)class

meta

: verbose_name = verbose_name_plural =

"學員資訊"

def__str__

(self)

:return''.

format

(self.name)

2、admin.py:
from django.contrib import admin

from

.models import student

@admin.register(student)

class

studentadmin

(admin.modeladmin)

: list_display =

['id'

,'name'

,'***'

,'profession'

,'email'

,'qq'

,'phone'

,'status'

,'created_time'

] list_filter =

('***'

,'status'

,'created_time'

) search_fields =

('name'

,'profession'

) fieldsets =((

none,)

,)

#!/usr/bin/env python

# -*- coding: utf-8 -*-

from django import forms

import re

from

.models import student

class

studentform

(forms.modelform)

:# 增加qq號必須為純數字的校驗

defclean_qq

(self)

: cleaned_data = self.cleaned_data[

'qq']if

not cleaned_data.isdigit():

raise forms.validationerror(

'必須是數字!'

)return

int(cleaned_data)

# 增加手機號是否合法的驗證

defclean_phone

(self)

:"""

通過正規表示式驗證手機號碼是否合法

:return: 手機號碼

"""mobile = self.cleaned_data[

'phone'

] mobile_regex = r'^1[34578]\d$'

p = re.

compile

(mobile_regex)

if p.match(mobile)

:return

int(mobile)

else

:raise forms.validationerror(

'請填入有效的手機號碼。'

, code=

'invalid mobile'

)class

meta

: model = student # 復用models.py裡面的**

# 前台顯示可編輯的字段

fields =

('name'

,'***'

,'profession'

,'email'

,'qq'

,'phone'

)

clean_開頭的函式,django會逐個執行,所以可以在這些函式中對前台提交的字段數進行驗證。

forms.py中clean開頭的函式執行地方在儲存資料到instance的時候:

django學習 Form表單

在驗證某個欄位的時候,可以傳遞乙個validators引數用來指定驗證器,對資料進行進一步的過濾。驗證器有很多,但是很多驗證器我們其實已經通過這個field或者一些引數就可以指定了。比如emailvalidator,我們可以通過emailfield來指定,比如maxvaluevalidator,我們...

Struts 中表單Form型別轉換問題

五一快到,辦公室天天有人討論去哪去哪玩的,明天公司又集體組織在島內玩一天,現在都沒什麼心思工作了,還好任務不多,老總出差不在,可以放肆一下,呵呵.翻了翻以前學習web開發時留下的學習文件,感覺有些拿出來複習複習還是很有用的。下面是一篇有關structs在presentation層資料型別轉換的一些問...

Django中 form表單的使用

from django import forms 第一步 首先在models.py中定義乙個表單模型 class remarkform forms.form subject forms.charfield max length 100 label mail forms.emailfield labe...