django框架中的form元件的用法

2022-04-02 23:25:46 字數 2412 閱讀 7212

先導入:

from django.forms import

form

from django.forms import

fields

from django.forms import widgets

from django.core.validators import regexvalidator

from django.core.exceptions import validationerror

在建立類,繼承form(定義input框的驗證規則)

class

loginform(form):

username=fields.charfield(error_messages=,

widget=widgets.textinput(attrs=))

password=fields.charfield(error_messages=,

widget=widgets.passwordinput(attrs=))

defclean_username(self):

#...

user = self.cleaned_data['

username']

is_exsit = models.userinfo.objects.filter(username=user).count()

ifnot

is_exsit:

raise validationerror('

使用者名稱不存在')

return user

在例項化建立物件,將物件返回給render函式進行渲染

if request.method=="

get"

: form=loginform()

return render(request,"

login.html

",)

模板渲染

使用者名稱:}}

密碼:}}

使用者輸入資訊提交後進行驗證

form=loginform(data=request.post)

ifform.is_valid(): #是否驗證成功

user=models.userinfo.objects.filter(**form.cleaned_data).first() #通過驗證則進行資料庫比對

ifuser:

request.session[settings.wxp]=

return redirect("

/index/")

form.add_error(

'password

', validationerror('

使用者名稱或密碼錯誤'))

return render(request,"

login.html

",)

else

:

return render(request,"

login.html

",) #沒通過驗證則返回錯誤資訊

重寫__init__方法(推薦使用)

class

classform(form):

caption = fields.charfield(error_messages=)

headmaster_id = fields.choicefield(choices=)

def__init__(self,*args,**kwargs):

super().

__init__(*args,**kwargs)

self.fields[

'headmaster_id

'].choices = models.userinfo.objects.filter(ut_id=2).values_list('

id','

username

')

方法一

#

使用modelchoicefield建立字段

from django.forms.models import

modelchoicefield

class

classform(form):

caption = fields.charfield(error_messages=)

headmaster_id = modelchoicefield(queryset=models.userinfo.objects.filter(ut_id=2))

方法二

Django框架全面講解 Form

django中的form一般有兩種功能 輸入html 驗證使用者輸入 usr bin env python3 coding utf 8 import re from django import forms from django.core.exceptions import validationer...

Django框架全面講解 Form

django中的form一般有兩種功能 輸入html 驗證使用者輸入 usr bin env python3 coding utf 8 import re from django import forms from django.core.exceptions import validationer...

django中form的使用

所有的form類都是django.forms.form的子類。from django import forms class nameform forms.form your name forms.charfield label your name max length 100 在html頁面中使用 ...